2
私は列挙型を持つモデルがあります:私はしようとするとActiveRecordの列挙エラー:「有効な値ではありません」
t.integer "pending_users", limit: 4, default: 0, null: false
:
enum pending_users: {
pending_users_disabled: 0,
pending_users_enabled: 1
}
そして、ここでは、フィールドがschema.rbで説明する方法です私は次のエラーが表示
Parameters: {"utf8"=>"✓", "authenticity_token"=>"...", "group"=>{"pending_users"=>"1"}, "commit"=>"Update Group", "id"=>"33"}
:
次のパラメータを使用してコントローラを介して、それを更新します0ArgumentError - '1' is not a valid pending_users:
activerecord (4.2.7.1) lib/active_record/enum.rb:104:in `block (3 levels) in enum'
activerecord (4.2.7.1) lib/active_record/attribute_assignment.rb:54:in `_assign_attribute'
activerecord (4.2.7.1) lib/active_record/attribute_assignment.rb:41:in `block in assign_attributes'
actionpack (4.2.7.1) lib/action_controller/metal/strong_parameters.rb:185:in `each_pair'
activerecord (4.2.7.1) lib/active_record/attribute_assignment.rb:35:in `assign_attributes'
activerecord (4.2.7.1) lib/active_record/persistence.rb:251:in `block in update'
activerecord (4.2.7.1) lib/active_record/transactions.rb:351:in `block in with_transaction_returning_status'
activerecord (4.2.7.1) lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `block in transaction'
activerecord (4.2.7.1) lib/active_record/connection_adapters/abstract/transaction.rb:184:in `within_new_transaction'
activerecord (4.2.7.1) lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `transaction'
activerecord (4.2.7.1) lib/active_record/transactions.rb:220:in `transaction'
activerecord (4.2.7.1) lib/active_record/transactions.rb:348:in `with_transaction_returning_status'
activerecord (4.2.7.1) lib/active_record/persistence.rb:250:in `update'
app/controllers/groups_controller.rb:53:in `update'
私の見解から、1はenumの有効な値です。このような行動を引き起こす原因は何ですか?
本当に 'enum pending_users:%w(有効になっていません)'を使うべきです。 'pending_users_'接頭辞は冗長です。 – meagar
@meagar私はここにモデル全体を含めなかった。実際、私のモデルには他の有効/無効の列挙型があり、レール4には同じ値を持つ複数の異なる列挙型を含める方法がありません – borisano