有没有一种方法可以让Rails将记录保存到数据库中,而不是在保存之前自动将时间戳转换为UTC?问题是,我有几个从遗留数据库中提取数据的模型,这些数据库将所有数据保存在Mountain Time中,有时我必须让我的Rails应用程序写入该数据库。问题是,每次它这样做时,它都会将我给出的时间从山地时间转换为UTC,这比UTC快了6-7个小时(取决于DST)!不用说,这真的会扰乱数据库的报告。
如果我能绕过这一关,我会的。不幸的是,对于另一个数据库使用不同时区的事实,我无能为力,我也真的无法摆脱这个应用程序偶尔保存到那个数据库的需要。如果我能让Rails停止帮助我,那就太好了。
发布于 2010-06-05 02:11:39
如果有人好奇,我最终要做的是做以下事情:
假设有一个类Foo。我创建了一个after_save方法来抓取时间,然后对数据库进行手动查询,所以我的解决方案如下所示:
class Foo < ActiveRecord::Base
#stuff relating to class
def after_save
if (@changed_attributes.has_key?('CreateStamp'))
time_str = self.CreateStamp.in_time_zone('Mountain Time (US & Canada)').to_datetime.to_s(:db)
qry = "UPDATE Lead SET CreateStamp='#{time_str}' WHERE id='#{id}'"
connection.execute(qry)
end
end
end这样,无论何时将记录保存到数据库并修改时间戳字段(在我的示例中为CreateStamp),我都会在初始保存之后运行第二个查询,该查询以我需要的格式发送时间戳,并且Rails不会妨碍它。
https://stackoverflow.com/questions/2970204
复制相似问题