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