Factory Girl在Rails 4中未初始化的常量NameError

时间:2013-11-21 22:46:43

标签: ruby-on-rails ruby-on-rails-4 factory-bot

我正在尝试使用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

为什么它适用于一种型号而不适用于另一种型号?提前谢谢。

2 个答案:

答案 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