我想让我的应用程序的用户指定一个时区,然后在每个请求开始时设置他们的时区。在 Rails,AFAICT 中,这是通过设置单例对象来完成的:
Time.zone = "America/Los_Angeles"
我对最佳实践的理解是,一般来说,单例应该设置一次。例如在应用程序配置中。
从对类似问题的回答中,有人建议将其设置在 ApplicationController
class ApplicationController < ActionController::Base
before_filter :set_timezone
def set_timezone
# current_user.time_zone #=> 'London'
Time.zone = current_user.time_zone if current_user && current_user.time_zone
end
end
这安全吗?还是我冒着让一个线程影响另一个线程的风险?我将尝试对此进行测试,但这不是最简单的测试场景,所以我想我应该看看是否有人已经这样做了。