Ruby on rails Rails-今天上午5点之前还是之后查询记录?

Ruby on rails Rails-今天上午5点之前还是之后查询记录?,ruby-on-rails,ruby,time,Ruby On Rails,Ruby,Time,我需要编写一个范围(或方法)来根据一天中的时间查询事件——基本上我希望有“未来”和“过去”事件——但偏移量在早上5点开始 用例是一个夜总会。凌晨1点,活动仍在进行中,看门人仍需要像活动即将开始一样使用活动。但到了早上5点,比赛就结束了,老板们现在想看看比赛进行得如何 我有这样的作用域(date是datetime): scope:future,->{where(“date>=?”,date.today+5.hours)} 范围:过去,->{where(“date

我需要编写一个范围(或方法)来根据一天中的时间查询事件——基本上我希望有“未来”和“过去”事件——但偏移量在早上5点开始

用例是一个夜总会。凌晨1点,活动仍在进行中,看门人仍需要像活动即将开始一样使用活动。但到了早上5点,比赛就结束了,老板们现在想看看比赛进行得如何

我有这样的作用域(date是datetime):

scope:future,->{where(“date>=?”,date.today+5.hours)}
范围:过去,->{where(“date<?”,date.today+5.hours)}
但这不起作用。有人知道我是如何做到这一点的吗


编辑:永远爱下层选民!我不知道该怎么说得更清楚。在活动日期的早上5点,我希望活动进入过去的范围。非常简单的问题。祝你过得愉快。

如果rails在UTC为你节省时间,你可能会遇到时区问题。您可以尝试类似于
Time.now.utc+5.hours

的Date.today方法使用操作系统提供的系统日期和时间功能,因此使用它不是一种好的做法

您应该明确指定时区


有关更多信息,请参阅此问题的答案:

您有两个同名的
作用域。很抱歉,这是一个输入错误。您所说的“完全不工作”是什么意思?您希望发生什么,以及实际发生了什么?帮助我们帮助你。因此,如果现在是凌晨1点,那么接下来的四个小时应该算作“过去”?不,如果是凌晨1点,还有4个小时才能过去。想想一家夜总会……这个活动仍然需要向看门人展示。但是到了早上5点,比赛就结束了,老板们想看看比赛进行得如何。
scope :future, -> { where("date >= ?", Date.today + 5.hours) }
scope :past, -> { where("date < ?", Date.today + 5.hours) }