ruby 使用枚举时发生ArgumentError

lfapxunr  于 2023-06-22  发布在  Ruby
关注(0)|答案(2)|浏览(139)

访问“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

这是以前从未发生过的我不认为我做了什么与往常不同的事情时设置它。

wbgh16ku

wbgh16ku1#

当使用枚举并传递哈希值时,该值只能是整数

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

**注意:**当一个值被添加到枚举数组中时,它在数组中的位置必须保持不变,新的值只能添加到数组的末尾。如果你不想这样做,应该使用上面的显式哈希语法。

mrphzbgm

mrphzbgm2#

出现错误是因为您在此处使用了值“send”作为枚举值。"send"是一个在所有Ruby对象上都可用的方法。因此,rails没有访问enum,而是意外地尝试使用“send”方法,这就是为什么你会得到“错误的参数数量”错误的原因。使用其他类似“send_out”的命令。

相关问题