Группировка "и" и "или" в AREL

Я пытаюсь запросить эквивалент этого фрагмента 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 не влияет. Есть мысли?

9
задан brad 10 November 2011 в 16:56
поделиться