2017-02-18 79 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

數據類型是字符串 –