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