gpt4 book ai didi

ruby-on-rails - 为什么在始终设置 Time.zone 的情况下,在 Rails 中使用 Time.current 而不是 Time.zone.now?

转载 作者:行者123 更新时间:2023-12-04 07:36:18 24 4
gpt4 key购买 nike

Time.current 的文档说:

Returns Time.zone.now when Time.zone or config.time_zone are set, otherwise just returns Time.now.

# File activesupport/lib/active_support/core_ext/time/calculations.rb, line 36
def current
::Time.zone ? ::Time.zone.now : ::Time.now
end


但是什么时候 Time.zone曾经 不是 在 Rails 中设置?
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
# config.time_zone = 'Berlin'

我已注释掉 config.time_zone而且我仍然得到 Time.zone 等于“UTC”,因为它显然在评论中提到了默认设置。那么,使用 Time.current 的意义何在?在 Time.zone.now ?

PS:我在 Rails 4.1.16 上观察到这一点

最佳答案

简短的回答是,如果您使用 Rails,除了更简洁/更短的语法之外没有区别。照原样。

Time.zone_default 在 ActiveSupport::Railtie 中初始化通过 active_support.initialize_time_zone .有关 railtie 初始化过程的更多信息 here .

我对这项检查的原因的猜测是,作为一个框架,它考虑了有人删除此 active_support.initialize_time_zone 的情况。从他们的 rails 启动过程。在那种情况下 Time.zone将是 nil .

关于ruby-on-rails - 为什么在始终设置 Time.zone 的情况下,在 Rails 中使用 Time.current 而不是 Time.zone.now?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45743960/

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