设置每个请求的时区

时间:2017-01-26 22:12:14

标签: ruby-on-rails ruby datetime timezone

我根据请求设置用户的时区。用户的时区保存在数据库中,然后我在应用程序控制器中使用around动作设置时区。

然而,每隔一段时间,似乎随机我得到一个错误ArgumentError(没有给出阻止):app / controllers / application_controller.rb:84:in`set_time_zone'

我不明白为什么?以前有人这样做吗?还有更好的方法吗?

我按照此操作来帮助我进行设置:https://www.varvet.com/blog/working-with-time-zones-in-ruby-on-rails/

application_controller:

around_action :set_time_zone, if: :current_user

def set_time_zone(&block)
   time_zone = current_user.try(:time_zone) || 'UTC'
   Time.use_zone(time_zone, &block) 
end

1 个答案:

答案 0 :(得分:0)

我们的应用程序使用类似的模式,但我们使用before_filter,然后

Time.zone = @current_admin_user.time_zone

设置后,为进程设置,每个进程一次只运行一个请求。