2016-04-14 41 views
0

我試圖根據HABTM關係中的用戶查詢對話。我有conversations,usersconversations_users表,並且需要根據對話中的用戶獲取對話。基於HABTM匹配的Rails查詢

Conversation模型包含與:users的HABTM關係。

我已經試過這樣:

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

,但它使用OR語句,我需要8位和10是需要

+0

我不確定我是否理解這個問題,但我無法看到您的模型以確保它是正確的,但您應該能夠說Conversation.users以獲取屬於給定對話的用戶列表。這是不是工作,或生產和錯誤? – trh

+0

我可以查詢每個對話,然後查詢每個用戶,並檢查我需要的用戶,但這似乎是爲什麼太密集。 –

回答

0

好吧,似乎下面會做什麼,我需要:

user_ids = [8,10] 

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

參考this回答更多細節