2013-06-24 170 views
2

我有兩個工廠分別爲我的CompanyEmployee模型。 Employeebelongs_toCompany的關係。這裏是我的兩個工廠:避免在循環中複製記錄

factory :company do 
    name "foo company" 
end 

factory :employee do 
    company 
    name 'Willy Bytes'  
end 

有一些場合,我需要遍歷數組數據,並相應地填充新Employee記錄來測試針對我的規格不同的條件。爲了說明這一點,我用下面的規格來測試我的包容驗證之一:

it "should be valid if they like red blue or green" do 
    ["red","blue","green"].each do |c| 
    FactoryGirl.build(:employee, :favourite_colour => c).should be_valid 
    end 
end 

it { FactoryGirl.build(:upload, :favourite_colour => "other").should_not be_valid } 

不過,我對母公司場,當我試圖建立其產生錯誤唯一性約束記錄。有沒有一種智能的方法來解決/避免這個問題?我經常遇到這些類型的規格,通常我會做的是定義一個單獨的Company工廠,並將其分配給循環中的每個記錄,但它不直觀並導致大量重複。序列是唯一的解決方法嗎?

回答

0

您可以使用factory_girl的sequence generator。你的工廠看起來像這樣。

factory :company do 
    sequence(:name) {|n| "company #{n}"} 
end 
+0

我希望有一種方法可以避免創建多餘的公司使用Factory Girl完全記錄。我幾乎想了一些[find_or_create_by_name](http://api.rubyonrails.org/classes/ActiveRecord/Base.html#label-Accessing+attributes+before+they+have+been+typecasted)。 – Noz

0

一號線:

​​