「フォロー」機能を実装しました。「ユーザーAがフォローしている人」を表示するのは簡単でしたが、「ユーザーAをフォローしている人」を表示するのは面倒です。
id、user_id、follow_you_id 列を持つ follow_links があります。ユーザー A がユーザー B をフォローし始めると、列は (user_id = A, follow_you_id = B) のようになります。
A(@user) がフォローしていることをユーザーに示すには、次のようにします。
@follow_yous = @user.follow_yous
しかし、A(@user) をフォローしているユーザーを表示する方法がわかりません。
これを行うために、まず関連するすべてのリンクを見つけました。
@follow_links = FollowLink.where(:follow_you_id => @user.id)
今、私はただできると思ってい@follow_mes = @follow_links.users
ましたが、それはuser
未定義のメソッドです。だから私はどちらかを呼び出すことができると思いますuser.follow_yous
またはfollow_you.users
.
私の次のアプローチは
@follow_links = FollowLink.where(:follow_you_id => @user.id)
@follow_mes = User.where(:id => @user.id, :include => @follow_links)
提供された @follow_links オブジェクトを持つすべての User オブジェクトを見つけるつもりでしたが、構文が間違っていたと思います。少し調査した後、適切な解決策を見つけることができませんでした。助けていただければ幸いです。
更新: FollowLink モデル
belongs_to :user
belongs_to :follow_you, :class_name => "User"