目前项目采用了双数据库:PostgreSQL
和 MySQL
,但 PostgreSQL 采用的是 PRC 时区,而 MySQL 使用的是 UTC 时区。
在 config/appliction.rb
的配置是这样子的:
config.active_record.default_timezone = "PRC"
config.time_zone = 'Beijing'
而对于以 MySQL 为 DB 的模型里,我建了一个 source_model.rb 的模型,然后在 model 里去 include 它
module SourceModel
extend ActiveSupport::Concern
included {
establish_connection "source_#{Rails.env}"
self.default_timezone = :utc
}
end
# 引用的例子
class User < ActiveRecord::Base
include SourceModel
end
这时候问题就出来了,当你调用过 User
此模型时,AR 所采用的 timezone 就会被变更,而这会影响到以 PSQL 为 DB 的模型,出来的数据的就错,但是又不可能说每次调用前去变更当前的 timezone。
请问有没有人遇到过并解决了这问题的?还是说只能把 PSQL 的时区也改成 UTC ?