我正在尝试使用Factory Girl生成具有多态依赖项的模型实例。例如,属性可以具有_one假设,租户可以具有假设,而属性可以具有多个租户。我想使用Factory Girl生成:property_with_assumption或a:tenant_with_assumption。
我可以使用属性做到这一点没有问题:
FactoryGirl.define do
factory :property do
...fields...
end
factory :property_with_assumption do
after(:create) do |property|
FactoryGirl.create(:assumption, assumable: property)
end
end
end
我对租户有类似的定义:
FactoryGirl.define do
factory :tenant, :class => 'Tenant' do
...fields...
end
factory :tenant_with_assumption do
after(:create) do |tenant|
FactoryGirl.create(:assumption, assumable: tenant)
end
end
end
但是当我尝试
时FactoryGirl.create(:tenant_with_assumption, property: [valid property])
我得到了
NameError: uninitialized constant TenantWithAssumption
为什么它适用于一种型号而不适用于另一种型号?提前谢谢。
答案 0 :(得分:6)
您需要提供:class
参数:
factory :tenant_with_assumption, :class => 'Tenant' do
答案 1 :(得分:0)
你也可以用嵌套的方式来做。
FactoryGirl.define do
factory :tenant, :class => 'Tenant' do
...fields...
factory :tenant_with_assumption do
after(:create) do |tenant|
FactoryGirl.create(:assumption, assumable: tenant)
end
end
end
end