【问题标题】:Trouble with the speed of using in_time_zone使用 in_time_zone 的速度问题
【发布时间】:2012-05-16 00:44:17
【问题描述】:
我正在使用 Ruby 1.8.7 和 Rails 3.0.3。尽管目前我的所有用户都与我的服务器处于同一时区,但我认为为了准备统治世界,我会摆脱所有RubyTimeObjIGotOutOfMyDb.getlocal 调用并将它们替换为用户时区所在的RubyTimeObjIGotOutOfMyDb.in_time_zone(user_timezone)我的用户表中的一列。现在发生的事情是我的页面加载时间可能是 5 到 6 倍。这是错误的策略吗?有没有更好的方法让我为来自服务器的不同时区的用户做好准备?
【问题讨论】:
标签:
ruby-on-rails
ruby
timezone
【解决方案1】:
看这个railscast
我认为你只需要这样做
控制器/应用程序.rb
before_filter :set_user_time_zone
private
def set_user_time_zone
Time.zone = current_user.time_zone if logged_in?
end
并且所有的时间都会在从 db 获取时进行转换
如果时间不在当前时区,请在视图中尝试(或在控制台中进行测试)
Time.now.in_time_zone
更新:
如果您多次调用in_time_zone(zone),我认为它会多次获取相应的时差,就像截屏视频告诉的那样,它只会获取一次并在每次转换中使用它。