Utilisateur: has_many utilisateurs,: par =>: amis - comment?
-
18-09-2019 - |
Question
Ceci est mon code:
class Friend < ActiveRecord::Base
belongs_to :user
belongs_to :friend, :class_name => "User", :foreign_key => "friend_id"
end
class User < ActiveRecord::Base
#...
has_many :friends
has_many :users, :through => :friends
#...
end
Quand je commence maintenant l'ajout d'utilisateurs par ...
user.users << user2
user.save
Seul le user_id d'ami est rempli, friend_id est nulle.
Toute aide?
Bien à vous, Joern.
La solution
Vous devez ajouter l'attribut :source
à votre association has_many through
.
class User < ActiveRecord::Base
has_many :friends
has_many :users, :source => :friend, :through => :friends
end
Maintenant, les appels suivants fonctionneront.
u1.users << u2
u.friends.last
# will print #<Friend id: 1, user_id: 1, friend_id: 4>
Notes:
- Rails auto enregistre le associations.You besoin d'appeler
save
uniquement si le modèle utilisateur est nouveau. - Vous devriez probablement renommer l'association à quelque chose de plus explicite. Par exemple:.
friend_users
etc
Autres conseils
Essayez: Railscasts - autoréférentielle Associations . En général, a de très bons tutoriels sur tous les sujets énumérés.
Je pense que vous devez supprimer le belongs_to: l'utilisateur dans votre modèle ami
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow