Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 工厂中构建回调后如何跳过?_Ruby On Rails 3_Factory Bot - Fatal编程技术网

Ruby on rails 3 工厂中构建回调后如何跳过?

Ruby on rails 3 工厂中构建回调后如何跳过?,ruby-on-rails-3,factory-bot,Ruby On Rails 3,Factory Bot,我在创建工厂时遇到了一个问题。我有一个像这样的工厂: 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_pa

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

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

创建工厂时如何跳过生成后的回调?

如果您只想偶尔运行生成后的回调,最好是定义一个嵌套工厂:

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\u build:
FactoryGirl.create(:job\u with\u additional\u setup)创建一个正常作业。