2013-11-21 74 views
3

我試圖使用Factory Girl來生成具有多態屬性的模型實例。例如,屬性可以有一個假設,租戶可以有一個假設,屬性可以擁有多個租戶。我想使用Factory Girl來生成:property_with_assumption或者:tenant_with_assumption。工廠女孩未初始化的常量NameError在Rails 4中

我可以做到這一點沒有問題屬性:

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 

爲什麼它只適用於一種型號,而不適用於其他型號?提前致謝。

回答

6

您需要提供:class參數:

​​
+0

感謝您的快速回復。爲什麼我需要Tenants上的class參數,但不需要屬性? – thusson

+1

':property_with_assumption'也不起作用。你可能不會在任何地方調用它。如果工廠名稱不同於類名稱的下劃線版本,則需要提供':class'參數。 –

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 
相關問題