Ruby on rails 活动记录日期范围选择

Ruby on rails 活动记录日期范围选择,ruby-on-rails,activerecord,scope,Ruby On Rails,Activerecord,Scope,我正在尝试使用范围来提取今天发生的事件,并在接下来的7天内使用它们的开始日期和结束日期(我还处理UTC+7的时区): #日期范围(在任何一方的7天内开始) t=时间。现在。在时区(“曼谷”) 范围:七天,λ{其中(“开始日期=?”,t+7.days,t-7.days)} 因此,这将拾取过去7天内开始的任何内容,并在接下来的7天内开始。但是,我怎样才能同时获得从(比如)两个月前开始运行并在两个月后结束的东西呢?因此,它在未来7天(以及今天)仍处于活动状态,但在范围之外开始和结束 谢谢 假设您有一

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

#日期范围(在任何一方的7天内开始)
t=时间。现在。在时区(“曼谷”)
范围:七天,λ{其中(“开始日期=?”,t+7.days,t-7.days)}
因此,这将拾取过去7天内开始的任何内容,并在接下来的7天内开始。但是,我怎样才能同时获得从(比如)两个月前开始运行并在两个月后结束的东西呢?因此,它在未来7天(以及今天)仍处于活动状态,但在范围之外开始和结束


谢谢

假设您有一个名为
date\u 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)
}
t=Time.now.in_时区(“曼谷”)
经营范围:七天,lambda{

其中(“date\u start>=”和date\u start谢谢Fabian\u Winkler。你能解释一下背后的逻辑吗?我不明白OR在这里是如何工作的。所以让我们用括号让逻辑更明显:
(date\u start≥ ? 什么时候开始≤ ?) 或(开始日期)≤ ? 结束日期≥ ?)第一部分选择在过去7天内开始或将在未来7天内开始的所有事件。第二部分选择在7天以上开始并将在7天以上结束的所有事件。
运算符(也称为逻辑析取)将两个子集连接起来。
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)
}