我有两个轨道模型之间的关联,'项目'和'步骤',这样项目有很多步骤。一个步骤需要一个project_id,一个项目至少需要一个步骤才能生效...我想知道如何在没有递归问题的工厂女孩中创建它。
目前,我的工厂看起来像这样:
factory :project do
#...
steps { |s| [s.association(:step)] }
end
factory :step do
#...
association :project
end
当然,由于递归关联,返回“堆栈级太深”错误。问题是,我需要填充两个值。
任何建议表示赞赏。
答案 0 :(得分:0)
假设这是你的模特:
class Project < ActiveRecord::Base
has_many :steps
end
class Steps < ActiveRecords::Base
belongs_to :project
validates :steps, :presence => true
end
我认为这可能是一个工厂:
factory :project do
after(:build) do |project|
project.steps << FactoryGirl.create(:step)
end
end
factory :step do
end
你可以在其中使用这样的project.spec.rb:
it "must have a step to be valid" do
expect(FactoryGirl.create(:project)).to be_valid
end
我是从臀部开枪,很抱歉,如果这不起作用。无论如何,我认为这是一般性的想法。