我正在使用Ruby 1.8.7和Rails 3.0.3。尽管目前我的所有用户都与我的服务器处于同一时区,但我认为为了准备统治世界,我会摆脱所有RubyTimeObjIGotOutOfMyDb.getlocal
调用,并将它们替换为RubyTimeObjIGotOutOfMyDb.in_time_zone(user_timezone)
其中用户的时区是用户表中的一列。发生的事情是现在我的页面可能需要 5 或 6 倍的时间来加载。这是错误的策略吗?有没有更好的方法,我应该为服务器不同时区的用户做准备?
观看此 railscast
我认为你只需要做
控制器/应用程序.rb
before_filter :set_user_time_zone
private
def set_user_time_zone
Time.zone = current_user.time_zone if logged_in?
end
从数据库获取时,所有时间都将被转换
如果时间不在当前时区,请在视图中尝试此操作(或在控制台中进行测试)
Time.now.in_time_zone
更新:如果您多次in_time_zone(zone)
调用,我认为它会多次获取相应的时差,就像截屏视频告诉的那样,它只会获取一次并在每次转换中使用它。