Je rencontre des problèmes en configurant correctement mes usines pour un has_many/has_many à travers ou has_and_belongs_to_many association avec des validations. Le modèle client/usine a été omis, mais il existe. Quelle est la meilleure façon de configurer has_many à has_many en associant des validations, où les attributs doivent être transmis?Factory Girl has_many/has_many à travers avec la validation
J'ai essayé quelques méthodes pour le faire fonctionner sans succès. Le code pertinent actuel est ci-dessous (légèrement modifié). D'autres méthodes ont essayé: after (: create) et before (: create) sur client_team pour créer user_clients, traits sur client_teams et user_clients qui définissent l'association, en utilisant build_list/create_list à la place de l'opérateur shovel.
modèle ClientTeam:
belongs_to :client
has_many :client_team_rosters
has_many :users, through: :client_team_rosters
modèle utilisateur:
belongs_to :client
has_many :client_team_rosters
has_many :client_teams, through: :client_team_rosters
validates_presence_of :client_teams
modèle ClientTeamRoster:
belongs_to :user
belongs_to :client_team
usines pertinentes:
factory :client_team do
client
team_name "stuff"
end
factory :client_team_roster do
client
user
end
factory :user do
...
factory :user_client do
client
before(:create) do |user_client|
client_team = user_client.client.client_teams.first
user_client.client_team_rosters << FactoryGirl.build(:client_team_roster, user: user_client, client_team: client_team)
end
end
end
fichier Spec:
before(:each) do
@client = create(:client)
@client_team = create(:client_team, client: @client)
end
it "should do something" do
user_client = create(:user_client, client: @client)
end
erreur actuelle:
Validation failed: Client_teams can't be blank