将应用的时区设置为当前用户的时区 - Time.zone与Time.use_zone

时间:2012-11-08 20:41:43

标签: timezone ruby-on-rails-3.2

这两段代码之间的区别是什么?什么时候应该使用一个与另一个?

Time.zone

class ApplicationController < ActionController::Base
  before_filter :set_time_zone

  def set_time_zone
    Time.zone = current_user.time_zone
   end
end

Time.use_zone

class ApplicationController < ActionController::Base
  around_filter :set_time_zone

  def set_time_zone(&block)
    Time.use_zone(current_user.time_zone, &block)
   end
end

1 个答案:

答案 0 :(得分:0)

似乎Time.use_zone在提供的块内局部覆盖Time.zone,然后在完成后将Time.zone重置为现有值。

因此,第二个代码块相当于在每个方法的开头调用Time.zone = current_user.time_zone,然后将其重置为Time.zone

中指定的默认/config/application.rb

虽然我还不确定推荐的方法是哪种。从性能角度来看,似乎第一种选择会更好,但可能会出现第二种选择更有意义的情况。

更多信息: