Учитывая следующие области:
scope :started, -> { where('start_date < :date', date: Time.zone.today) }
scope :without_end_date, -> { where(end_date: nil) }
scope :ended, -> { where('end_date < :date', date: Time.zone.today) }
Я ожидаю, что ended.or(started.without_end_date)
выдаст:
WHERE ((end_date < '2020-04-24') OR (end_date IS NULL AND start_date < '2020-04-24'))
Вместо этого я получу:
WHERE ((end_date < '2020-04-24') OR (start_date < '2020-04-24') AND end_date IS NULL)
Как я могу заставить ActiveRecord обрабатывать связанные области внутри .or
как одну группу?
Я знаю, что могу сделать это:
ended.or(where('end_date IS NULL AND start_date < :date', date: Time.zone.today))
, но я хотел бы иметь возможность использовать Области применения.