0
我试图用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天(今天)仍然活跃,但在范围之外开始和结束?
谢谢!
谢谢Fabian_Winkler。你能解释一下这背后的逻辑吗?我不明白OR如何在这里工作。 – matski
所以让我们使用圆括号来使逻辑更加明显: '(date_start≥?AND date_start≤?)OR(date_start≤?AND date_end≥?)' 第一部分选择在过去7天内开始的所有事件,在未来7天内开始。 第二部分将选择7天前开始的所有活动,并将在7天以上结束。 “OR”运算符(也称为逻辑析取)将两个子集连接起来。 –
好,太好了。似乎工作。谢谢! – matski