gpt4 book ai didi

ruby-on-rails - 定义哪些模型将被转换为 activerecord 时区配置

转载 作者:行者123 更新时间:2023-12-04 03:35:45 25 4
gpt4 key购买 nike

我正在寻找一种仅在某些模型中使用 ActiveRecord 时区配置的方法,或者用一些我不需要的方法来禁用它。

像这样:

模型 User、Access、Sale 使用与 application.rb 相同的时区:config.time_zone = "xxxx"

但 Models Lap、CheckIn 不使用时区设置或 UTC。

我考虑过使用 after_initialize 方法来清除时区配置和类似 *after_free*(我知道它不存在)的东西从旧配置值支持时区设置。

这不是一个简单的方法吗??

最佳答案

如果您希望对特定模型或特定模型上的特定字段执行此操作,请使用 this post 中描述的方法对我来说效果很好。

# Turn it off for just some columns
class Picture < ActiveRecord::Base
def self.skip_time_zone_conversion_for_attributes
[:created_at, :published_at]
end
end

# Turn it off for the whole model
class Picture < ActiveRecord::Base
def self.time_zone_aware_attributes
false
end
end

如果有帮助,这是我的测试用例:

before :all do
@current_tz = Time.zone
# Test usually runs in UTC; test this as if in production, per config/application.rb
Time.zone = 'Pacific Time (US & Canada)'
end

after :all do
Time.zone = @current_tz
end

it 'should report UTC time as UTC time' do
new_obj = MyModel.create(start_time: DateTime.new(2013, 3, 31, 0, 0, 0, 0))
new_obj.reload
new_obj.start_time.to_s.should == 'Sun, 31 Mar 2013 00:00:00 +0000'
end

关于ruby-on-rails - 定义哪些模型将被转换为 activerecord 时区配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8344774/

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