小编Ras*_*kov的帖子

在rails 3.2中存储带时区的时间戳

我正在尝试使用其包含的时区将所有时间戳存储在rails应用程序中.我很好用ActiveRecord将它们转换为utc,但是我有多个应用程序命中同一个数据库,其中一些是按时区要求实现的.所以我想做的就是让activerecord像往常一样转换我的时间戳,然后用字符串'America/Los_Angeles'或者附加到时间戳的任何适当的时区将它们写入数据库.我目前在jruby 1.7.8上运行rails 3.2.13,它实现了ruby 1.9.3 api.我的数据库是postgres 9.2.4,与activerecord-jdbcpostgresql-adaptergem 连接.列类型是带时区的时间戳.

我已经activerecord-native_db_types_override通过在我的environment.rb中添加以下行来更改gem 的自然activerecord映射:

  NativeDbTypesOverride.configure({
    postgres: {
      datetime: { name: "timestamp with time zone" },
      timestamp: { name: "timestamp with time zone" }
    }
  })
Run Code Online (Sandbox Code Playgroud)

我的application.rb目前包含

  config.active_record.default_timezone = :utc
  config.time_zone = "Pacific Time (US & Canada)"
Run Code Online (Sandbox Code Playgroud)

我怀疑我可以重写ActiveSupport::TimeWithZone.to_s并更改它:db格式输出正确的字符串,但我还没能完成那项工作.任何帮助深表感谢.

ruby postgresql activerecord ruby-on-rails ruby-on-rails-3

9
推荐指数
1
解决办法
4186
查看次数