У меня возник вопрос о составлении нескольких условий с AND
и OR
в отношении приоритетов операций.Сложные условия Arel с AND и OR
Итак, мне нужно сгенерировать следующий SQL строку для передачи в к where
методе:
where("NOT ((assignments.to IS NOT NULL AND assignments.to < :start_date) OR assignments.from > :end_date)", start_date: date.at_beginning_of_week, end_date: date.at_end_of_week)
я переписал его с Arel:
table = Assignment.arel_table
where(
table[:from].gt(date.at_end_of_week).
or(
table[:to].not_eq(nil).and(table[:to].lt(date.at_end_of_week))
).not
)
Но Арел не ставит скобку условия с AND
и в результате это условие выбирает неверные данные. Как я могу положить скобки в этом состоянии?
Может быть, можно избежать использования 'not', но не в моем случае. Но в любом случае мой вопрос был не о 'не', а о группировке. – bronislav