我目前正在尝试在Factory Girl中实现多表继承。所以我的模型“业务”的参数为“ biz_type ”,并且有不同类型的商家模型,例如 bar ,餐厅,酒店等。我想要做的是创建一个关联“biz”,它将链接到其中一个biz_types模型。如您所见,商业模型将按顺序生成。所以第一个是酒吧,然后是餐厅,酒店和酒吧......等等。
然而,似乎我无法访问“biz_type”序列的值。当我运行此代码时,会出现错误in block (2 levels) in <top (required)>': undefined method downcase' for #<FactoryGirl::Declaration::Implicit:0x000000034c6550> (NoMethodError)
。我已经尝试通过biz_type.to_attributes[0].to_proc.call.downcase.to_sym
访问该值。这几乎是成功的,虽然它是一种hacky解决方案,而且它总是只提供第一种类型的商业,在我们的示例“bar”中。
有没有很好的解决方案如何建立业务工厂,以便每个business.biz都会提供不同的生成商业模式?
FactoryGirl.define do
factory :business do
sequence :biz_type do |n|
case n % 3
when 1
"Bar"
when 2
"Restaurant"
when 0
"Hotel"
end
end
association :biz, factory: biz_type.downcase.to_sym
end
end
in block (2 levels) in <top (required)>': undefined method downcase' for #<FactoryGirl::Declaration::Implicit:0x000000034c6550> (NoMethodError)