2016-04-14 10 views
0

HABTM関係にあるユーザーに基づいて会話を照会しようとしています。私はconversationsusers、およびconversations_usersテーブルを持っており、会話中のユーザーに基づいて会話を取得する必要があります。HABTM一致に基づくRailsクエリ

Conversationモデルには、:usersというHABTMの関係が含まれています。

私はこの試みている:

Conversation.includes(:users).where(users: {id: [8,10]})

をしかし、それはORステートメントを使用して、私は以下は私が必要なものをやるということらしい[OK]を

+0

私は質問を理解しているとは確信していませんが、モデルが正しいかどうかを確認することはできませんが、Conversation.usersを使って、特定の会話に属するユーザーの一覧を取得できるはずです。それはうまくいかないのか、それともエラーが出るのでしょうか? – trh

+0

私は各会話を照会し、各ユーザーを照会して、必要なユーザーと照合することができましたが、それはあまりにも集中的な理由です。 –

答えて

0

を要求されることが8と10の両方が必要です:

user_ids = [8,10] 

Conversation.joins(:users) 
.where(users: {id: user_ids}) 
.group("conversations.id") 
.having(['COUNT(*) = ?', user_ids.count]) 

は詳細

ため thisの回答を参照してください。
関連する問題