Я пытаюсь запросить эквивалент этого фрагмента sql, используя arel:
WHERE (("participants"."accepted" = 'f' AND "participants"."contact_id" = 1)
OR "participants"."id" IS NULL)
Так что я хочу (accepted && 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 и . Я полагаю, что в соответствии с приоритетом оператора я получаю:
accepted && (contact_id=1 OR NULL)
Добавление круглых скобок в запрос AREL не влияет. есть идеи?