我有一個category
模型。我使用祖先的寶石,使它像一個樹結構,以便我們可以有子類別。我有一個簡單的工廠category
看起來像這樣與FactoryGirl的Recusive協會
factory :category do
sequence(:name) { |n| "Category #{n}"}
end
我有具有main_category
和sub_category
另一個模型business
。這是我廠的經營
factory :business do
sequence(:name) { |n| "businnes#{n}"}
sequence(:email) { |n| "busixy#{n}@example.com"}
sequence(:website) { |n| "www.example#{n}.com"}
association(:main_sub_category)
main_category {Business.main_sub_category.parent}
end
我想在這裏做的是分配business
一個新的類別,它是一個sub_category
的main_sub_category
並於category
的父分配給企業的main_category
。
爲了得到這個,我創建了一個名爲sub_category 工廠的新工廠:category do sequence(:name){| n | 「Category#{n}」} factory:subcategory do | sub | sub.parent工廠:類 結束 結束
當我嘗試上面的代碼中,我得到這個錯誤
Factory already registered: category (FactoryGirl::DuplicateDefinitionError)
我嘗試另一種方式來做到這一點
factory :category do
sequence(:name) { |n| "Category #{n}"}
factory :subcategory do |sub|
sub.parent {FactoryGirl.create(:category)}
end
end
這樣,它的工作原理但是當我使用工廠創建業務對象時
@business = FactoryGirl.create :business
它給我驗證錯誤
ActiveRecord::RecordInvalid: Validation failed: Name has already been taken
我有類別名稱唯一性驗證。
任何有這樣一個遞歸的工廠問題的幫助。
感謝