我正在使用Ruby 1.8.7和Rails 3.0.3。尽管目前我的所有用户与我的服务器位于同一时区,但我认为在准备统治世界时,我将摆脱所有RubyTimeObjIGotOutOfMyDb.getlocal
次呼叫并将其替换为RubyTimeObjIGotOutOfMyDb.in_time_zone(user_timezone)
用户的时区是我用户表中的一列。现在发生了什么,我的页面加载时间可能是5到6倍。这是错误的策略吗?有没有更好的方法我应该为我服务器上不同时区的用户做准备?
答案 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)
,我认为它会多次获取相应的时差,就像截屏视频所说的那样,它只会获取一次并在每次转换中使用它。