1

我在两个轨道模型“项目”和“步骤”之间有关联,因此一个项目有很多步骤。一个步骤需要一个project_id,一个项目至少需要一个步骤才能有效......我想知道如何在没有递归问题的工厂女孩​​中创建它。

目前,我的工厂是这样的:

factory :project do
  #...
  steps { |s| [s.association(:step)] }
end

factory :step do
  #...
  association :project
end

当然,由于递归关联,它会返回“堆栈级别太深”错误。问题是,我需要填充这两个值。

任何建议表示赞赏。

4

1 回答 1

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

我是从臀部射击,如果这不起作用,很抱歉。无论如何,我认为这是一般的想法。

于 2014-02-28T00:10:13.640 回答