Factory Girl - MTI多态关联的顺序工厂

时间:2013-10-24 11:01:51

标签: ruby-on-rails testing associations factory-bot factory

我目前正在尝试在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)

0 个答案:

没有答案