0

我在创建工厂时遇到了问题。我有一个像这样的工厂:

Factory.define :job do |j|
  j.association :service_partner, :factory => :service_partner
  j.price_per_task 1.to_money
  end
  j.after_build{|j| j.project.service_partner_ids = [j.service_partner.id] unless j.service_partner.nil?}
end

创建工厂时如何跳过 after_build?

4

1 回答 1

1

如果您只想让 after_build 回调偶尔运行,最好的办法是定义一个嵌套工厂:

Factory.define :job do |j|
  j.association :service_partner, :factory => :service_partner
  j.price_per_task 1.to_money
  end
  factory :job_with_additional_setup do
    j.after_build{|j| j.project.service_partner_ids = [j.service_partner.id] unless j.service_partner.nil?}
  end
end

FactoryGirl.create(:job)然后,您可以通过使用 after_build来创建一个正常的工作:FactoryGirl.create(:job_with_additional_setup)

于 2013-02-21T00:46:54.870 回答