ユーザーの数は :users、:through => :friends - どのようにして?
-
18-09-2019 - |
質問
これは私のコードです:
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
ここでユーザーを追加し始めると...
user.users << user2
user.save
友人の user_id のみが入力され、friend_id は null です。
何か助けはありますか?
あなた、ジョーン。
解決
を追加する必要があります :source
あなたに帰属します has_many through
協会。
class User < ActiveRecord::Base
has_many :friends
has_many :users, :source => :friend, :through => :friends
end
これで、次の呼び出しが機能するようになります。
u1.users << u2
u.friends.last
# will print #<Friend id: 1, user_id: 1, friend_id: 4>
ノート:
- Rails は関連付けを自動保存します。呼び出す必要があります。
save
ユーザーモデルが新しい場合のみ。 - おそらく、関連付けの名前をより明示的な名前に変更する必要があります。例えば:
friend_users
等
他のヒント
試してみてください: Railscasts - 自己参照協会に。一般的に記載されているすべてのトピックについての非常に良いチュートリアルを持っています。
私はあなたがbelongs_toのを削除する必要があると思う:あなたの友人のモデルでは、ユーザー
所属していません StackOverflow