radio_buttonでenumで管理しているカラムにvalueを送ったらerrorが起きたときの対処法

f:id:ihatov08:20160722225705p:plain

Railsでenumで管理しているinteger型のカラムにviewの中でradio_buttonでvalueを送信しようとしたら、errorが起きました。

<%= f.radio_button :sex, 1 %>

models/user.rb

class User < ActiveRecord::Base
enum sex: [:female, :male]
end

このコードだと値を送信したときにstring型になってしまっているらしく、enumでセットしていない値を送信しようとするとエラーが起きてしまうようです。
enumではハッシュで値を指定しないと、0,1というデフォルト値が設定されます。

そんなときはenum作ったシンボルを指定するとRailsがうまいことやってくれます。

    <%= f.radio_button :sex, :female %>
<%= f.radio_button :sex, :male %>

わざわざ0とか1とか書かなくていいんですね。
このほうがわかりやすいですね!

参考にしたサイト

[Rails] 固定の値はEnumを使おう | inter-arteq.com :: interaction between art and technology

パーフェクト Ruby on Rails

パーフェクト Ruby on Rails

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です