91s

プログラミング関係、日記などを書きます

【Rails】booleanのカラムにenumを設定した際のチェックボックスの挙動

このようなmodelがあったとして、

class Billing < Activerecord
  
  enum billed: {
    done: true,
    in_progress: false
  } 

end

編集画面で

~略~
= f.check_box :billed
~略~

のようにすると一見編集できそうですが、このままだとチェックしてsubmitした際に

'1' is not is not a valid billed

のようなエラーが出ます。

色々調べたところenumの影響のようで、check_boxのデフォルトのチェック時の値が1なのでこのようになっているようです。 なので対策としてはcheck_boxのチェック時・非チェック時の値を変更すればokです。 今回の例では、

~略~
= f.check_box :billed, {}, checked_value='billed', unchecked_value='in_progress'
~略~

のようにすれば問題なく通ります。