获取Rails的保存记录到数据库在非UTC时间

获取Rails的保存记录到数据库在非UTC时间

问题描述:

有没有办法让Rails的将记录保存到数据库中没有它自动的时间戳转换成UTC保存之前?问题是,我有一个从在山地时间节省一切旧的数据库中提取数据,偶尔我也有我的Rails应用程序写入到数据库的几个模型。问题是,它每次都会将它从山地时间转换到UTC,这是6-7小时(取决于DST)!毋庸置疑,这对报告数据库非常混乱。获取Rails的保存记录到数据库在非UTC时间

如果我能得到周围做这个的,我会的。不幸的是,我不能做这个其他数据库使用不同的时区,我也不能真正得到需要离开这个程序,保存到数据库偶尔事实上任何东西。如果我能让Rails停止尝试帮助我,那会很棒。

如果任何人的好奇,我终于有工作是做到以下几点:

假设一个类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没有阻碍。

+0

非常有用的实际。我不知道他们为什么这样做。 – 2011-02-02 23:37:06