根据用户的当前时区获取记录

时间:2016-04-19 14:39:31

标签: ruby-on-rails datetime ruby-on-rails-4 cookies

我的请求模型中有日期和时间字段,我当前的用户应根据当前日期和时间查看请求(请求日期和时间未通过)。

@requests = Request.where([date >= ? and user_id = ? and time >= ?, Date.current, current_user.id, Time.current])

所以我要通过以下链接,从中获取有关如何从浏览器获取时区并将其存储在cookie中的信息。

http://thisbythem.com/blog/clientside-timezone-detection/

为了缓解我使用了以下宝石的事情并检查了我的cookie,这给了我时区。

https://github.com/kbaum/browser-timezone-rails

仍然没有按照我的时区工作,我也在服务器和本地机器上进行了测试。 我可以看到那些超出我当前时间的记录。

1 个答案:

答案 0 :(得分:0)

找到解决方案我的查询中存在逻辑错误,因此回答正确的查询:

  1. 日期和时间都是不同的字段,因此在查询“日期”和“时间”字段时,上面的查询只会呈现今天的日期和未来日期的记录,但是在我当前时间之后。因此需要将“时间”字段更改为“日期和时间”,并且只需要通过“时间”字段的查询。例如

    @requests = Request.where([user_id = ? and time >= ?, Date.current, current_user.id, Time.zone.now])

    gem“browser-timezone-rails”有助于以UTC格式转换和保存当地时间。