Каков самый простой и быстрый способ получить предложение, в котором все элементы в массиве должны соответствовать -, а не только одному при использовании IN
? В конце концов, он должен вести себя как mongodb $all .
Размышляя о групповых беседах, в которых беседа _пользователи представляет собой таблицу соединения между идентификатором беседы _и идентификатором пользователя _, я имею в виду нечто подобное:
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 |
У беседы много пользователей, и пользователь принадлежит ко многим беседам. Чтобы найти всех пользователей в разговоре, я использую эту таблицу соединений.
В конце концов, я пытаюсь понять рубин на рельсах scope
, который находит мне разговор в зависимости от его участников -, например.:
scope :between, ->(*users) {
joins(:users).where('conversations_users.user_id all in (?)', users.map(&:id))
}
ОБНОВЛЕНИЕ 23.07.12
Мой вопрос касается поиска точного совпадения людей. Поэтому:
Разговор между (1,2,3)
не будет совпадать, если запрашивается(1,2)