【发布时间】:2015-05-05 17:33:40
【问题描述】:
这种奇怪的行为最近引起了我的注意,当时我正在本地环境中测试我的 Rails 应用程序,在该环境中我使用 around_filter 将时区设置为注册用户(默认时区是 UTC)。
我所做的是在我的应用中注册了一个新用户。我当前的时间是格林威治标准时间 5 点(3 月 3 日)晚上 10 点,并且该用户的 created_at 时间已保存到数据库中的世界标准时间凌晨 4 点(3 月 4 日)。现在,我知道这个时间是用时区设置保存在数据库中的,但是问题来了:
我使用图表来直观地表示每日注册用户,当我调用以下函数来告诉我最近几天注册的用户数量时:
from ||= Date.today - 1.month
to ||= Date.today
where(created_at: from..to).group('DATE(created_at)').count
在我看来,这个用户是在 3 月 4 日注册的,而实际上是在 3 月 3 日注册的。
我的问题是: 我应该如何调用 where 函数并按 created_at 列分组,以便正确影响日期(根据我的时区)?
或者还有其他我应该做的不同的事情吗?
【问题讨论】:
标签: ruby-on-rails-4 activerecord timezone