Je suis encore débutant dans Rails, mais j'ai été confondu avec l'initialisation d'une association HABTM. La lecture de sa documentation, il est ditLa méthode de construction n'associe pas dans Rails
Lors de l'initialisation d'une nouvelle has_one ou belongs_to association, vous devez utiliser le préfixe build_ pour construire l'association, plutôt que la méthode association.build qui serait utilisé pour les associations has_many ou has_and_belongs_to_many.
Donc, en gros, supposons que nous avons deux modèles:
class User < ApplicationRecord
has_and_belongs_to_many :organizations
end
class Organization < ApplicationRecord
has_and_belongs_to_many :users
end
intérieur organization_controller, depuis que je suis à l'aide de conception, d'mes méthode de création devrait avoir quelque chose comme ceci:
@organization = current_user.organizations.build(organization_params)
@organization.save
Cependant, cela ne fonctionne pas. Avec byebug, j'ai vérifié que pour les current_user.organizations, la nouvelle organisation était là, mais si j'appelle @ organization.users, il y a un tableau vide. On dirait qu'il est nécessaire d'exécuter current_user.save aussi, est-ce correct? J'ai pu associer les deux modèles avec ce code:
@organization = Organization.new(organization_params)
@organization.users << current_user
@organization.save
Vous ne manquez pas une table de jointure? –
Non, c'est là –