例えば、性別の項目で
- 男性: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は外して設定するようにしました。
どなたか、良い方法あれば教えてください。
コメントを残す