2013-02-07 32 views
1

我有兩個軌道模型,「項目」和「步驟」,使得項目有許多步驟之間的關聯。一個步驟需要一個project_id,並且一個項目至少需要一個步驟才能生效......我想知道如何在沒有遞歸問題的工廠女孩​​中創建這個步驟。軌道/工廠女孩:共同存在驗證

目前,我的工廠是這樣的:

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

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

其中,當然,返回一個「堆棧級別太深」錯誤,由於遞歸關聯。問題是,我需要兩個值來填充。

任何建議表示讚賞。

回答

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 

我從臀部射擊,很抱歉,如果這不起作用。無論如何,我認爲這是總體思路。