1

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

时区

class ApplicationController < ActionController::Base
  before_filter :set_time_zone

  def set_time_zone
    Time.zone = current_user.time_zone
   end
end

时间.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
4

1 回答 1

0

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

因此,第二个代码块相当于Time.zone = current_user.time_zone在每个方法的开头调用,然后将其重置Time.zone为您指定的默认值/config/application.rb

虽然我仍然不确定哪种是推荐的方法。从性能的角度来看,似乎第一个选项会更好,但在某些情况下,第二个选项可能更有意义。

更多在这里:

于 2013-10-30T23:01:13.700 回答