ruby-on-rails - Time.now.midnight 对时区的敏感性

标签 ruby-on-rails ruby-on-rails-3

我有一些日常分析风格的记录来跟踪我网站上的使用情况,它们的工作方式如下:

  • 当“事件”发生时,站点会查找在 Time.now.midnight 创建的记录。 .
  • 如果没有找到这样的记录,则会创建一个新记录,并且 created_at设置为 Time.now.midnight .

  • 这是问题 - 是否 Time.now.midnight根据客户的时区获得不同的记录?如果是这样,我假设上述非常简单的系统会崩溃是否正确?

    如何修复它,以便所有分析记录,无论触发创建的用户所在的时区如何,都与一次 Hook ?

    注意:我想设置 created_at在这种情况下,将字段改为日期而不是日期时间可能会更好。让我们假设我们在这个问题上坚持使用日期时间。

    最佳答案

    Time.now 不会根据客户端时区进行不同的记录。

    Time.now 使用系统时区(又名服务器)返回新时间

    要使用客户端特定的时区,您必须让用户选择他们的时区并使用 Time.current 或 Time.zone.now (它们做同样的事情)

    created_at 通常固定到 UTC,所以你也不应该有任何问题。
    (要改变这一点,你需要改变 Rails.root/config/application.rb)

    config.time_zone = "whatever you want the ActiveRecord default to be"
    

    关于ruby-on-rails - Time.now.midnight 对时区的敏感性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5465302/

    相关文章:

    ruby-on-rails - 我应该使用什么 Ruby on Rails 图像库来制作词汇卡?

    database - Rails 3 建立与另一个数据库的连接仅适用于一个查询

    ruby - 基于另一个下拉列表的选择的下拉列表

    ruby - Rails 3 中的 Angular 模板

    ruby-on-rails - rails-在连接表中创建记录

    ruby-on-rails - 如何测试 Rack 中间件?

    ruby-on-rails - 无法自动加载常量,期望 FILEPATH 定义它 - 换句话说,是吧?

    mysql - 使用另一个表中的 ID 创建新表条目

    ruby-on-rails - 在 Rails 中,是否可以限制谁可以使用 api 登录 google?

    ruby-on-rails-3 - Rails 3 - 如何发送文件以响应 rails 中的远程表单?