Benutzer has_many: Benutzer,: durch =>: Freunde - wie?
-
18-09-2019 - |
Frage
Dies ist mein 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
Wenn ich beginne jetzt das Hinzufügen von Benutzern von ...
user.users << user2
user.save
Nur der user_id von Freund gefüllt ist, friend_id ist null.
Jede Hilfe?
Mit freundlichen Grüßen, Joern.
Lösung
Sie müssen das :source
Attribut zu Ihrer has_many through
Zuordnung hinzuzufügen.
class User < ActiveRecord::Base
has_many :friends
has_many :users, :source => :friend, :through => :friends
end
Nun werden die folgenden Aufrufe funktionieren.
u1.users << u2
u.friends.last
# will print #<Friend id: 1, user_id: 1, friend_id: 4>
Weitere Informationen:
- Rails Auto speichert die associations.You müssen nur anrufen
save
, wenn der Benutzer Modell neu ist. - Sie sollten wahrscheinlich den Verein etwas deutlicher benennen. Z.
friend_users
etc
Andere Tipps
Versuchen: Railscasts - selbstbezüglicher Verbände . Im Allgemeinen hat eine sehr gute Tutorials zu allen Themen aufgelistet.
Ich glaube, Sie löschen müssen, den belongs_to: Benutzer in Ihrem Freund-Modell
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow