1

「フォロー」機能を実装しました。「ユーザー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"
4

2 に答える 2

2

joins次のように使用できます。

@users = User.joins(:follow_links).where(:follow_links => { :follow_you_id => @user.id })
于 2012-12-13T01:08:46.773 に答える
1

以下を使用できます:

@follow_links = FollowLink.where(:follow_you_id => @user.id)
@follow_links.collect(&:user) # :user should be the name of your relation to user in your followlink model
=> [User1, User2,...]
于 2012-12-13T01:03:27.350 に答える