読者です 読者をやめる 読者になる 読者になる

boolean とselect helper の紐付けでドはまり

性別をboolean で定義している場合(別に性別じゃなくてもいいんだけど)、
MySQL にはtrue, false がそれぞれ1, 0 として登録される。


form 用のrhtml には

<dt><label for="member_sex">性別*</label></dt>
<dd><%= select 'member', 'sex', [['男性', 0], ['女性', 1]] %></dd>

つい上記の用に記述してしまいがちになる(私だけ?)が、
編集画面を表示する際に表示されるセレクトボックスのデフォルト値が
MySQL に格納されている値と一致しない。

<dt><label for="member_sex">性別*</label></dt>
<dd><%= select 'member', 'sex', [['男性', false], ['女性', true]] %></dd>

こんな感じで、きちんとboolean で定義する必要があるようだ。
# 登録するときは0, 1 でも問題なかったのに。


書籍やWeb で30分ほど調べても分からなかったので、金曜の夜に放置して帰ったのだが
週末にリフレッシュしたおかげで、あっさり解決できてしまった。