2016-04-14 73 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回答更多细节