【发布时间】:2018-05-22 19:22:08
【问题描述】:
我有一个 Rails 应用程序,我在控制器的 before 操作中为每个请求设置时区,如下所示:
Time.zone="Central Time (US & Canada")
我可以用
打印时区puts Time.zone
这是打印出来的。
(GMT-06:00) Central Time (US & Canada)
在我调用模型中的方法之前,所有这些都可以正常工作。当我这样做时,时区会丢失,我必须在我的模型中再次设置Time.zone。
如果我在我的模型中调用下面的方法,它会从我的控制器打印 UTC 时间。
型号
def self.import_file(file)
puts Time.zone
# this prints out UTC time.
end
这是预期的行为还是我遗漏了什么?
【问题讨论】:
-
当您说您在控制器中设置时区时,这是否取决于谁登录?或者这应该是整个 Rails 应用程序的全局配置?对于前者,您需要将时区作为参数传递给模型方法;模型不知道“当前用户”。在后者的情况下,这段代码一开始就不属于控制器!您应该在
config/application.rb中设置全球时区。
标签: ruby-on-rails ruby ruby-on-rails-5