2011-08-03 5 views
1

Je voudrais créer deux objets qui font référence à un autre, seul objet que j'ai créé dans le avant (: each) bloquerFactory Girl: créer un objet avec une association à un objet existant

par exemple.

# in my factories.rb file.. 
factory :blah_1 do 
    association :foo, :factory => :foo 
end 

... 

# in my spec.. 

before(:each) do 
    foo = Factory(:foo) 
end 

... 

foo.blahs << Factory(:blah_1) 
foo.blahs << Factory(:blah_1) 
# some test on foo to make sure the right thing happened 

Quand je lance cette spécification, il tente de créer une instance de foo pour les blah_1 et blah_2, à défaut parce que je ne permets pas un attribut en double.

J'avais comme pour obtenir les deux blah_1 et blah_2 à référence une seule usine foo.

Merci d'avance pour votre aide :)

+0

avez-vous l'intention de la dernière déclaration dans votre code de dire ': blah_2' au lieu de': blah_1'? –

Répondre

0

Ce que je fini par faire qui me fixe (s'il vous plaît laissez-moi savoir si cela est une mauvaise forme!) ..

# in my factories.rb.. 
factory :blah_1 do 
    # attributes, no associations 
end 

# in my spec.. 
before(:each) do 
    @foo = Factory(:foo) 
end 

... 

foo.blahs << Factory(:blah_1, :foo => @foo) 
foo.blahs << Factory(:blah_2, :foo => @foo) 

Il semble assez raisonnable de mon point de vue ..

+0

Oui, ceci est ma solution finale. –

Questions connexes