Rails - 今天上午5点之前或之后查询记录?

时间:2016-06-04 14:31:21

标签: ruby-on-rails ruby time

我需要编写一个范围(或方法)来根据一天中的时间查询事件 - 基本上我希望有" future"和"过去"事件 - 但是在凌晨5点开始的偏移。

用例是一家夜总会。凌晨1点,事件仍在继续,门卫仍然需要使用该事件,就好像它的来来往往一样。但到了早上5点,事件已经结束,业主现在想看看它是怎么回事。

我有这样的范围(日期是日期时间):

scope :future, -> { where("date >= ?", Date.today + 5.hours) }
scope :past, -> { where("date < ?", Date.today + 5.hours) }
但是,这不起作用。有没有人对我如何做到这一点有任何见解?

编辑:永远爱下来的人!我不知道如何更清楚地说明这一点。在活动日的凌晨5点,我希望活动落入过去的范围。非常简单的问题/问题。祝你有美好的一天。

2 个答案:

答案 0 :(得分:0)

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

之类的内容

答案 1 :(得分:0)

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

您应该明确指定时区。

有关详细信息,请参阅此问题的答案:Is Date.today in UTC?