1

User と Conversation の 2 つのモデルの間に HABTM 関連付けがあります。ログインしているユーザーの会話 ( current_user.conversations) をクエリして、別のユーザーの ID を渡し、両方のユーザーが共有する会話があればそれを返すようにしたいと考えています。(追加の特典は、クエリが存在しない場合に作成することです。)

@user.conversationsアソシエーションは正常に機能しているため、や などのインスタンス変数を介して関連オブジェクトにアクセスできます。その@conversation.usersため、長い道のりを進んで各会話オブジェクトをループし、それぞれのユーザー アソシエーションを検索できます...しかし、効率的なこのクエリを構築する方法。私ができるようになりたいのは、のようなcurrent_user.conversations.where(conversation.users.exists?(id: @user_id))ものですConversation.find(users: {id: @user_id AND current_user.id})

これには明らかな答えがあると思います。ここで同様の質問を探しましたが、見つかりませんでした。Rails API のドキュメントに目を通した後、私が探しているソリューションには.includes()何らかの方法が含まれていると思いますが、それを機能させることはできません。

何かアドバイス?ありがとう。

4

2 に答える 2

0

current_user.conversations.includes(:users).where(user.id:current_user.id) を試してください

于 2016-04-19T03:34:38.297 に答える