使用in_time_zone的速度有问题

时间:2012-05-16 00:44:17

标签: ruby-on-rails ruby timezone

我正在使用Ruby 1.8.7和Rails 3.0.3。尽管目前我的所有用户与我的服务器位于同一时区,但我认为在准备统治世界时,我将摆脱所有RubyTimeObjIGotOutOfMyDb.getlocal次呼叫并将其替换为RubyTimeObjIGotOutOfMyDb.in_time_zone(user_timezone)用户的时区是我用户表中的一列。现在发生了什么,我的页面加载时间可能是5到6倍。这是错误的策略吗?有没有更好的方法我应该为我服务器上不同时区的用户做准备?

1 个答案:

答案 0 :(得分:0)

观看此railscast

我认为你只需要做

controllers / application.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),我认为它会多次获取相应的时差,就像截屏视频所说的那样,它只会获取一次并在每次转换中使用它。