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.

War es hilfreich?

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:

  1. Rails Auto speichert die associations.You müssen nur anrufen save, wenn der Benutzer Modell neu ist.
  2. 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
scroll top