Я пытаюсь запросить эквивалент этого фрагмента sql, используя arel:
WHERE (("participants"."accepted" = 'f' AND "participants"."contact_id" = 1)
OR "participants"."id" IS NULL)
Итак, я хочу (принято && contact_id = 1) OR NULL
Вот что у меня есть в AREL
participants[:accepted].eq(false).and(participants[:contact_id].eq(1).
or(participants[:id].is(nil)
Проблема в том, что это генерирует:
("participants"."accepted" = 'f' AND "participants"."contact_id" = 1 OR "participants"."id" IS NULL)
Обратите внимание на отсутствие скобок вокруг my и conditions. Я полагаю , что согласно на приоритет оператора, который я получаю:
accepted && (contact_id=1 OR NULL)
Добавление скобок в запрос AREL не влияет. Есть мысли?