0

相互のいいねを取得する良い方法は何でしょうか? 2 人のユーザーが (フレンドリストのように) お互いに好きで、相互に一致するユーザーのみを取得しますか?

user_id   | likes_id 
1           2                
2           1

Only get results where both of the users likes each other ( friendship )

いくつかの結合を試しましたが、実際には機能しません。上記の結果を得る AR 機能を構築することはできますか?

4

4 に答える 4

2

これはあなたが探しているものだと思います: ruby​​ on rails は、アクティブなレコードで双方向の友人関係を取得していますか?

または、これを試すことができます:

SELECT     a.user_id
FROM       likes AS a
INNER JOIN likes AS b
ON         a.user_id=b.likes_id
AND        a.likes_id=b.user_id
于 2012-07-02T13:09:15.710 に答える
1

http://railscasts.com/episodes/163-self-referential-association

このようにして、ユーザー間の関係を作成できます。この例を使用して、メディア企業とこのメディアを所有する企業 (私の場合) との間の関係を作成したように、メディアは会社 A によって所有され、会社 A は会社によって所有される可能性があります。 B で、これが自己参照関連を取得する場所です。

あなたの場合、ユーザーモデルが必要なため、これを実装するのははるかに簡単です..私にとっては、さらに変更を加える必要がありました。

于 2012-07-02T13:02:00.310 に答える
0

で作った

 @groups = Like.select('l.*').joins('join likes l on likes.user_id=l.likes and   l.user_id=likes.likes')

  unless @groups.empty?
    @groups.each do |group|
      friendship = Friendship.create(user_id: group.user_id, friend_id: group.likes)
    end
  end

モデルの抽象化の方が優れているので、後で調べます

于 2012-07-03T11:15:20.517 に答える