🐈
Rails7 enumでundefined method `all?' for true:TrueClass (NoMethodError)
起こったこと
モデルにenumを定義して、うまく書けてるか確認しようとrails consoleでモデル名だけ入力して接続確認しようとしたら
/usr/local/bundle/gems/activerecord-7.0.7.2/lib/active_record/enum.rb:270:in `assert_valid_enum_definition_values': undefined method `all?' for true:TrueClass (NoMethodError)
unless values.is_a?(Hash) || values.all?(Symbol) || values.all?(String)
^^^^^
が出た
間違っていたenum
enum status: {
ok: 1,
ng: 2
}, prefix: true
動作したenum
enum :status, {
ok: 1,
ng: 2
}, prefix: true
もしくは
(古い書き方)
enum status: {
ok: 1,
ng: 2
}, _prefix: true
原因
Rails7からのprefixの設定方法と以前の記法が混ざっていた
参考
Discussion