我正在尝试使用其包含的时区将所有时间戳存储在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-adapter
gem 连接.列类型是带时区的时间戳.
我已经activerecord-native_db_types_override
通过在我的environment.rb中添加以下行来更改gem 的自然activerecord映射:
NativeDbTypesOverride.configure({ postgres: { datetime: { name: "timestamp with time zone" }, timestamp: { name: "timestamp with time zone" } } })
我的application.rb目前包含
config.active_record.default_timezone = :utc config.time_zone = "Pacific Time (US & Canada)"
我怀疑我可以重写ActiveSupport::TimeWithZone.to_s
并更改它:db格式输出正确的字符串,但我还没能完成那项工作.任何帮助深表感谢.