我正在尝试使用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天(和今天)仍然活跃,但在范围之外开始和结束?
谢谢!
答案 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)
}