【Rails】モデルのラジオボタンにデフォルトが設定されているとcheckedが効かなくなる

例えば、性別の項目で

  • 男性:0
  • 女性:1
  • その他:9

こんな風に整数型で設定するとします。

DBは

t.integer "gender", default:9

にして、defaultは上記のように「その他」に設定します。

 

View側では

<%= form.radio_button :gender, 0, checked: true %>
<%= form.radio_button :gender, 1 %>
<%= form.radio_button :gender, 9 %>

と書いて、「男」に初期値のチェックを付けます。

結果

上記のように「男」に初期のチェックを設定しても、それは効かずに「その他」に初期値のチェックが付きます。

理由はもうお分かりだとは思いますが、「その他」がdefaultになっているからですね。

これ、登録画面なら、defaultを「男」に変えればいいだけですが、編集画面とかで設定された値にチェック付けたい時もdefaultが優先されてチェックされるので、ちょっと困ったことになります。
これって、更新可能な項目に対してはdefault使えないのか…?

自分は、このdefaultってレコード登録(INSERT)の時だけ有効かと思っていたので2時間くらいはまりました。

結局、カラムのdefaultは外して設定するようにしました。

どなたか、良い方法あれば教えてください。

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA


ABOUTこの記事をかいた人

子どもが産まれたことをきっかけに働き方を見直し、フリーランスSEになった30代の父親。 埼玉県某市在住。 妻と娘(5歳)とペット(フェレット)で、日々悩みながらも楽しく過ごしています。