使用枚举时的ArgumentError

时间:2017-02-18 09:49:03

标签: ruby-on-rails ruby activerecord enums

访问“MyModel”时出现此错误

ArgumentError: wrong number of arguments (3 for 0) from /Users/.../.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/activerecord-4.2.1/lib/active_record/enum.rb:131:in `block (4 levels) in enum'

当我在我的模型上使用枚举时

class MyModel < ActiveRecord::Base       
  include ActiveModel::Validations
  enum transaction_type: { send: "send", reset: "reset", top_up: "top_up" }
end 
以前从未发生过的事情。在设置它时,我认为我没有做任何不同的事情。

1 个答案:

答案 0 :(得分:0)

使用枚举并传递散列时,该值应仅为整数

class MyModel < ActiveRecord::Base       
  include ActiveModel::Validations
  enum transaction_type: { send: 0, reset: 1, top_up: 2 }
end

或者,您可以使用数组

class MyModel < ActiveRecord::Base       
  include ActiveModel::Validations
  enum transaction_type: [ :send, :reset, :top_up]
end

注意:一旦将值添加到枚举数组中,就必须维护它在数组中的位置,并且只应将新值添加到数组的末尾。如果您不想这样,则应使用上面的显式哈希语法。