1

Dans mon application, un compte peut avoir un seul propriétaire (utilisateur) et plusieurs utilisateurs.Association Factory Girl auto-référencée dans le modèle parent

Dans mes tests, je fais ceci:

# account_factory_static.rb 
FactoryGirl.define do 
    factory :account do 
    name 'demoaccount' 
    association :owner, :factory => :user 
    end 
end 

# user_factory_static.rb 
FactoryGirl.define do 
    factory :user do 
    email '[email protected]' 
    first_name 'Jon' 
    last_name 'Doe' 
    password 'password' 
    end 
end 

et de les utiliser comme ci-dessous:

let(:account) { FactoryGirl.create(:account) } 

Le problème est que ce moment account.users.count est égal à 0 parce que je n'ai aucun moyen de faire quelque chose comme @account.users << @account.owner comme je le fais dans mes contrôleurs lorsqu'un utilisateur s'inscrit.

La question est de savoir comment puis-je ajouter l'ID du compte associé à l'attribut account_id de l'utilisateur dans FactoryGirl?

En d'autres termes, comment le faites-vous dans FactoryGirl?

Merci.

+0

Pouvez-vous, s'il vous plaît, fournir une information sur les associations entre ces modèles? Est-ce que 'account' a non seulement un' owner', mais aussi un peu de 'has_many: users'? – Ngoral

Répondre

1

Vous pouvez utiliser after :create bloc pour elle:

FactoryGirl.define do 
    factory :account do 
    name 'demoaccount' 
    association :owner, :factory => :user 

    after :create do |account| 
     account.users << account.owner 
    end 
    end 
end