1

按照 Ryan Bates 关于创建 before_filter 的说明来设置 time_zone ,如下所示:

before_filter :set_timezone

def set_timezone
    Time.zone = @current_user.time_zone
end

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

4

2 回答 2

3

Time.zone不是全局设置。有一个共享的默认设置(这是config.time_zone控制的内容),但调用Time.zone=不会设置它。

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

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

于 2012-06-15T12:56:05.163 回答
1

因为即使是 Rails 应用程序也可以有很多线程,每个线程都维护自己的zone. 因此,从您单击链接到获得响应正文,您一直在专门处理相同的线程(即使用相同的zone)。

于 2012-06-15T10:15:58.323 回答