为什么不在应用程序控制器中设置Time.zone会影响全局应用程序?

时间:2012-06-15 09:57:58

标签: ruby-on-rails timezone

按照Ryan Bates的说明创建一个设置time_zone的before_filter:

before_filter :set_timezone

def set_timezone
    Time.zone = @current_user.time_zone
end

为什么这不影响,比方说,另一个用户在不同的时区同时使用同一个应用程序?

2 个答案:

答案 0 :(得分:3)

Time.zone不是全局设置。有一个共享默认设置(config.time_zone控件),但调用Time.zone=没有设置。

相反,它设置了一个thead局部变量。从同一个线程对Time.zone的后续调用将读取该值,但来自其他线程的调用将不会

由于任何给定的线程一次只处理一个请求,因此可以为不同的用户提供不同时区的请求。

答案 1 :(得分:1)

因为即使Rails应用程序也可以拥有多个线程,每个线程都会维护自己的zone。因此,从您点击链接到获得响应正文时,您只能处理同一个帖子(即使用相同的zone)。