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



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

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

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

因此,第二个代码块等效于在每种方法的开头调用Time.zone = current_user.time_zone,然后将其重置回/config/application.rb

中指定的默认Time.zone

尽管我仍然不确定哪种建议方法。从性能角度来看,似乎第一个选择会更好,但是在某些情况下,第二种选择更有意义。

更多这里:

  • http://api.rubyonrails.org/classes/time.html#method-c-use_zone
  • http://railscasts.com/episodes/106 time-Zones-revied?view = asciicast

相关内容

  • 没有找到相关文章

最新更新