Ruby on rails Rails,ActiveRecord,查找周末发生的所有事件
我想知道是否有人可以帮助处理这个ActiveRecord查询。我有一些活动有开始和结束日期。我想运行一个cron作业,在下一个周末的每个星期四获取所有事件 类似于Ruby on rails Rails,ActiveRecord,查找周末发生的所有事件,ruby-on-rails,ruby-on-rails-4,activerecord,find,where,Ruby On Rails,Ruby On Rails 4,Activerecord,Find,Where,我想知道是否有人可以帮助处理这个ActiveRecord查询。我有一些活动有开始和结束日期。我想运行一个cron作业,在下一个周末的每个星期四获取所有事件 类似于 @events = Event.where("start_date <= ?", (Date.today + 3.days)).where("end_date >= ?", (Date.today + 3.days)) @events=Event.where(“开始日期=?”,(date.today+3.days))
@events = Event.where("start_date <= ?", (Date.today + 3.days)).where("end_date >= ?", (Date.today + 3.days))
@events=Event.where(“开始日期=?”,(date.today+3.days))
我知道上面的说法是不正确的,但希望有人能给我一个更简单的方法来找到这个查询的事件。。。提前谢谢 我们可以找到下周末的
开始时间
和结束时间
,这样之后查询就很容易了
# Start weekends time
start_next_saturday = Date.today.end_of_week.at_beginning_of_day - 1.days
# End weekends time
end_next_sunday = Date.today.end_of_week.at_end_of_day
arel_table = Event.arel_table
@events = Event.where(arel_table[:start_date].lteq(end_next_sunday)
.and(arel_table[:end_date].gteq(start_next_saturday)))
顺便说一句,
Date.today+3.days
可能是一种不正确的方法,因此使用上述逻辑查找周末时间更准确 我们可以找到下周末的开始时间
和结束时间
,这样之后查询就很容易了
# Start weekends time
start_next_saturday = Date.today.end_of_week.at_beginning_of_day - 1.days
# End weekends time
end_next_sunday = Date.today.end_of_week.at_end_of_day
arel_table = Event.arel_table
@events = Event.where(arel_table[:start_date].lteq(end_next_sunday)
.and(arel_table[:end_date].gteq(start_next_saturday)))
顺便说一句,Date.today+3.days
可能是一种不正确的方法,因此使用上述逻辑查找周末时间更准确 试试这个
Event.where(created_at: (Date.today.end_of_week-1..Date.today.end_of_week))
试试这个
Event.where(created_at: (Date.today.end_of_week-1..Date.today.end_of_week))
如果我试图将你的问题转化为一个算法,我认为你所追求的是:在下一个周末期间或之前(即周末结束之前)查找所有具有
开始日期
的事件,以及在下一个周末期间或之后(即周末开始之后)具有结束日期
的事件。这样,我们将找到至少部分涵盖周末的活动
如果您在周四运行rake,则下一个周末可以如下方式检索:
weekend_start = Date.today.end_of_week - 1 # the Saturday's date
weekend_end = Date.today.end_of_week # the Sunday's date
这样,查询就很容易了:
@events = Event.where("start_date <= ? AND end_date >= ?", weekend_end, weekend_start)
定义使用
时区
计算本地时区的时间。如果我试图将您的问题转化为算法,我认为您的目的是:在下一个周末期间或之前(即周末结束之前),查找所有具有开始日期的事件以及下一个周末期间或之后(即周末开始后)的结束日期。这样,我们将找到至少部分涵盖周末的活动
如果您在周四运行rake,则下一个周末可以如下方式检索:
weekend_start = Date.today.end_of_week - 1 # the Saturday's date
weekend_end = Date.today.end_of_week # the Sunday's date
这样,查询就很容易了:
@events = Event.where("start_date <= ? AND end_date >= ?", weekend_end, weekend_start)
定义使用Time.zone
来计算本地时区中的时间。这将查找上周末的事件,而OP希望下一个周末。为什么是阿雷尔?啊哈,谢谢你的建议,这只是制作QueryTanks HieuPham的一个选择!您的解决方案是可行的,但由于简单,使用了硼砂。感谢您的时间此功能查找上周末的事件,而OP希望在下一个周末进行。为什么是阿雷尔?啊哈,谢谢你的建议,这只是制作QueryTanks HieuPham的一个选择!您的解决方案是可行的,但由于简单,使用了硼砂。谢谢你的时间谢谢大家的建议!为了简单易懂,我使用了@BoraMa solution。清除并获得正确的查询!谢谢!=)谢谢大家的建议!为了简单易懂,我使用了@BoraMa solution。清除并获得正确的查询!谢谢!=)