ActiveRecord多个日期范围

Kor*_*oys 2 ruby activerecord ruby-on-rails

是否有更多的ActiveRecord惯用方法来查找哪些记录具有start_atend_at在某个date_range内?(基本上,需要找到在给定时间范围内开始或结束的记录).这是我目前正在做的事情:

Project.where('(start_at >= ? AND start_at <= ?) OR (end_at >= ? AND end_at <= ?)', start_at, end_at, start_at, end_at)
Run Code Online (Sandbox Code Playgroud)

spi*_*ann 6

您可以将范围传递给where并使用or:

time_range = (start_at..end_at)
Project.where(start_at: time_range).or(Project.where(end_at: time_range))
Run Code Online (Sandbox Code Playgroud)