У меня есть записи сообщений с датой created_at и, возможно, датой schedule.
Когда сообщение создается, его можно запланировать или сохранить как черновик.
Я хочу отображать в календаре все сообщения, которые были запланированы или написаны между двумя датами.
drafts = posts.where(schedule: nil).where(:created_at => post_start.to_date..post_end.to_date)
scheduled = posts.where(:schedule => post_start.to_date..post_end.to_date)
@posts = drafts + scheduled
Это сработает. Но должен быть способ объединить их в один запрос более эффективным способом. Как?
@AndreyDeineko - Меня всегда смущал монгоид, а не ноль. Не могу найти по нему никаких документов. В любом случае, поскольку я ищу диапазон дат для расписания, мы все равно можем исключить не ноль. Соответственно пересмотрел мой вопрос.





Вы можете попробовать использовать or для объединения этих запросов.
posts.or(
Post.where(schedule: nil).where(:created_at => post_start.to_date..post_end.to_date).selector,
Post.where(:schedule.ne => nil).where(:schedule => post_start.to_date..post_end.to_date).selector
)
:schedule.ne => nilне является допустимым кодом Ruby.