gpt4 book ai didi

ruby-on-rails - 获取 Rails 以非 UTC 时间将记录保存到数据库

转载 作者:搜寻专家 更新时间:2023-10-30 20:45:49 24 4
gpt4 key购买 nike

有没有办法让 Rails 将记录保存到数据库,而无需在保存前自动将时间戳转换为 UTC?问题是我有一些模型从遗留数据库中提取数据,这些数据库保存了 Mountain Time 中的所有内容,有时我必须让我的 Rails 应用程序写入该数据库。问题是每次它这样做时,它都会将我给它的时间从山区时间转换为 UTC,提前 6-7 小时(取决于夏令时)!不用说,这确实会扰乱该数据库的报告。

如果我能绕过这件事,我会的。不幸的是,对于这个其他数据库使用不同时区这一事实,我无能为力,我也无法真正摆脱这个应用程序偶尔保存到该数据库的需要。如果我能让 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 不会妨碍。

关于ruby-on-rails - 获取 Rails 以非 UTC 时间将记录保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2970204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com