Сложные условия Арела С и и или
У меня есть вопрос о составлении нескольких условий с 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)
Я переписал его с Арелом:
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
)
Но Arel не ставит скобки вокруг условия с AND
, и в результате это условие выбирает неправильные данные. Как я могу поставить скобки в этом состоянии?