在我的application_controller.rb
before_action :set_user_time_zone
def set_user_time_zone
Time.zone = 'Kolkata'
end
我添加了上面的代码来动态更改时区。但它不会更改时区。我在用户表中为每个用户都有time_zone字段,我想根据当前用户更改time_zone。如何动态更改Time.Zone?
答案 0 :(得分:0)
您可以在应用程序控制器中放置一个过滤器,该过滤器将应用于所有控制器中的所有操作,以便在处理日期和时间时使用用户的时区。
此代码来自Sebastian Porto,并假设您有一个:time_zone
列供用户使用。如果无法获取用户时区,则默认使用UTC。
class ApplicationController < ActionController::Base
around_filter :set_time_zone
def set_time_zone(&block)
time_zone = current_user.try(:time_zone) || 'UTC'
Time.use_zone(time_zone, &block)
end
end