J'ai un modèle category
. J'utilise bijou d'origine pour le rendre comme une structure arborescente afin que nous puissions avoir des sous catégories. J'ai une usine simple pour category
qui ressemble à ceciassociation Recusive avec factorygirl
factory :category do
sequence(:name) { |n| "Category #{n}"}
end
J'ai un autre modèle business
qui a une main_category
et un sub_category
. Voici mon usine pour l'entreprise
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
Ce que je suis en train de faire ici est d'assigner main_sub_category
du business
une nouvelle catégorie qui est un sub_category
et d'assigner le parent de cette category
à main_category
de l'entreprise.
Pour cela, j'ai créé une nouvelle usine appelée sous_catégorie usine: catégorie do séquence (: nom) {| n | "Catégorie # {n}"} usine: sous-catégorie faire | sous | usine sub.parent: catégorie fin fin
Lorsque je tente le code ci-dessus je reçois cette erreur
Factory already registered: category (FactoryGirl::DuplicateDefinitionError)
J'ai essayé une autre façon de le faire
factory :category do
sequence(:name) { |n| "Category #{n}"}
factory :subcategory do |sub|
sub.parent {FactoryGirl.create(:category)}
end
end
De cette façon, cela fonctionne mais quand je crée un objet métier en utilisant l'usine
@business = FactoryGirl.create :business
Il me donne une erreur de validation
ActiveRecord::RecordInvalid: Validation failed: Name has already been taken
J'ai une validation unique sur les noms de catégorie.
a eu ce genre Tout d'une usine récursive aide délivre genre.
Merci