IN
时的一个元素?毕竟它应该像mongodb的$all一样运行。考虑到对话用户是对话ID和用户ID之间的连接表,我有类似以下的想法:
WHERE (conversations_users.user_id ALL IN (1,2))
更新 16.07.12
关于结构和情况,添加更多信息:
联接表非常简单:
Table "public.conversations_users" Column | Type | Modifiers | Storage | Description -----------------+---------+-----------+---------+------------- conversation_id | integer | | plain | user_id | integer | | plain |
一次会话中有多个用户,每个用户都可以属于多个不同的会话。为了查找一次会话中的所有用户,我使用了这个联接表。
最终,我想找到一个 Ruby on Rails 的
scope
,它可以根据参与者来找到相应的对话 - 例如:
scope :between, ->(*users) {
joins(:users).where('conversations_users.user_id all in (?)', users.map(&:id))
}
更新 23.07.12
我的问题是关于查找完全匹配的人。因此:
如果查询 (1,2)
,那么 (1,2,3)
之间的对话不会匹配。
(1,2)
时,您是否也希望在结果中包括(1,2,3)
之间的对话,还是只要显示(1,2)之间的对话-无他人参与? - Erwin Brandstetter