2012-07-12 47 views
3

我厂拥有这样的:工厂女孩和懒惰初始化在运行分贝:迁移

FactoryGirl.define do 
    factory :member_data, 
      :class => Member do 
    first_name 'fn_member' 
    last_name 'ln_member' 
    end 
end 

当我运行db:migrate,FactoryGirl是创建Member表之前调用。而且我收到了一些错误,如“找不到属性”。我发现搜索时,有些事情必须延迟初始化互联网,如:

Factory.define :order do |f| 
    ... 
    f.code_id Code.first 
end 

必须是:

Factory.define :order do |f| 
    ... 
    f.code_id { Code.first } 
end 

事实上,如果我删除:class => Member迁移成功。但我怎么能懒惰地定义工厂:class ???

感谢

+1

你试过把它放在引号中吗? ('工厂:member_data,:class =>“成员”...') – iblue 2012-07-12 20:21:07

+1

谢谢,这太明显了:)创建一个答案,以便我可以接受它; ':class =>:成员'也在工作。 – ddidier 2012-07-12 20:37:24

回答

3

ActiveRecord允许其协会:class_name => "ClassNameInQuotes",并FactoryGirl也可以这样做。 只需将类名放在引号中。

FactoryGirl.define do 
    factory :member_data, :class => "Member" do 
    first_name 'fn_member' 
    last_name 'ln_member' 
    end 
end 
+0

你知道这是为什么吗?为什么工厂女生会在迁移之前运行? – 2017-05-16 12:54:18