活动记录日期范围选择

时间:2013-07-09 07:09:34

标签: ruby-on-rails activerecord scope

我正在尝试使用scope来接收今天发生的事件,并在接下来的7天内使用他们的开始日期和结束日期(我还处理UTC + 7的时区):

# scopes for date_start within 7 days on either side
t = Time.now.in_time_zone("Bangkok")
scope :seven_days, lambda { where("date_start <= ? AND date_start >= ?", t+7.days, t-7.days) }  

所以这会收集过去7天开始的任何事情,并在接下来的7天内开始。但是,我怎样才能从2个月前开始运行2个月内的运行?所以它在未来7天(和今天)仍然活跃,但在范围之外开始和结束?

谢谢!

1 个答案:

答案 0 :(得分:2)

假设您有一个名为date_end的属性:

t = Time.now.in_time_zone("Bangkok")
scope :seven_days, lambda {
  where("date_start >= ? AND date_start <= ? OR
    date_start <= ? AND date_end >= ?",
    t-7.days, t+7.days, t-7.days, t+7.days)
}