2017-02-18 77 views
-1

当我访问时“为MyModel”引发ArgumentError使用枚举

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 

这是从来没有过得到这个错误。设置时,我认为我没有做过与平时不同的事情。

+0

使用数组作为'enum' – uzaif

+0

@uzaif这不会在我的情况下工作 –

回答

0

当使用枚举和传递一个哈希值,该值应该是一个intgers只有

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 

注:一旦值被添加到枚举数组,它必须在数组中保持其位置,并且只能将新值添加到数组的末尾。如果你不想要这个,应该使用上面显式的散列语法。

+0

你确定它的整数只?我的用户模型使用这样的枚举(枚举角色:{用户:“用户”,管理员:“管理员”})它工作得很好 –

+0

这取决于你的'transaction_type'列的数据类型是字符串还是int? –

+0

数据类型是字符串 –