ruby Rails不允许创建新的枚举-示例方法已被另一个枚举定义

aij0ehis  于 2022-12-18  发布在  Ruby
关注(0)|答案(3)|浏览(109)

正在尝试将枚举添加到用户类:

enum vehicle: { car: 1, bus: 2, other: 3 }, _prefix: true

rails抛出一个错误
您试图在模型“Spree::User”上定义一个名为“vehicle”的枚举,但这将生成一个示例方法“vehicle_car?",该方法已经由另一个枚举定义。
我尝试了其他的名字,后缀和前缀选项,并在gems文件夹中制作了ack。我想这可能是Zeitwerk的问题,但我不知道如何解决。
正在处理Rails version: 6

gt0wga4j

gt0wga4j1#

您可以给予自定义前缀/后缀以使其不同于vehicle_car?

enum vehicle: { car: 1, bus: 2, other: 3 }, _prefix: :vehicle_type

model_instance.vehicle_type_car!
model_instance.vehicle_type_car? # => false

仅供参考
https://api.rubyonrails.org/v5.2.4.1/classes/ActiveRecord/Enum.html

slwdgvem

slwdgvem2#

如果validates调用引用了枚举,请确保键入的是复数形式vehicles.keys,而不是vehicle.keys,否则将出现此错误。

class User < ApplicationRecord
  enum vehicle: { car: 1, bus: 2, other: 3 }
  validates :vehicle, inclusion: { in: vehicles.keys }
end
enxuqcxy

enxuqcxy3#

如果你有一个名为vehicle_car的方法或列,就会发生这种情况,因为enum方法会尝试用这个名字为你创建一个helper。

相关问题