首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取Rails以在非UTC时间将记录保存到数据库

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

Stack Overflow用户
提问于 2010-06-04 06:19:51
回答 1查看 654关注 0票数 2

有没有一种方法可以让Rails将记录保存到数据库中,而不是在保存之前自动将时间戳转换为UTC?问题是,我有几个从遗留数据库中提取数据的模型,这些数据库将所有数据保存在Mountain Time中,有时我必须让我的Rails应用程序写入该数据库。问题是,每次它这样做时,它都会将我给出的时间从山地时间转换为UTC,这比UTC快了6-7个小时(取决于DST)!不用说,这真的会扰乱数据库的报告。

如果我能绕过这一关,我会的。不幸的是,对于另一个数据库使用不同时区的事实,我无能为力,我也真的无法摆脱这个应用程序偶尔保存到那个数据库的需要。如果我能让Rails停止帮助我,那就太好了。

EN

回答 1

Stack Overflow用户

发布于 2010-06-05 02:11:39

如果有人好奇,我最终要做的是做以下事情:

假设有一个类Foo。我创建了一个after_save方法来抓取时间,然后对数据库进行手动查询,所以我的解决方案如下所示:

代码语言:javascript
复制
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不会妨碍它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2970204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档