按照 Ryan Bates 关于创建 before_filter 的说明来设置 time_zone ,如下所示:
before_filter :set_timezone
def set_timezone
Time.zone = @current_user.time_zone
end
为什么这不会影响,比如说,另一个用户在不同时区同时使用同一个应用程序?
按照 Ryan Bates 关于创建 before_filter 的说明来设置 time_zone ,如下所示:
before_filter :set_timezone
def set_timezone
Time.zone = @current_user.time_zone
end
为什么这不会影响,比如说,另一个用户在不同时区同时使用同一个应用程序?
Time.zone
不是全局设置。有一个共享的默认设置(这是config.time_zone
控制的内容),但调用Time.zone=
不会设置它。
相反,它设置了一个 thead 局部变量。从同一线程对 Time.zone 的后续调用将读取该值,但来自其他线程的调用不会
由于任何给定线程一次只处理一个请求,因此您可以为不同的用户提供具有不同时区的请求。
因为即使是 Rails 应用程序也可以有很多线程,每个线程都维护自己的zone
. 因此,从您单击链接到获得响应正文,您一直在专门处理相同的线程(即使用相同的zone
)。