ActiveRecord模型,带有带时区支持属性的日期时间戳

时间:2010-01-26 08:21:54

标签: ruby-on-rails datetime activerecord timezone

Rails非常棒,它将使用Time.zone在应用程序中支持整体时区。我需要能够支持用户为记录选择的时区。用户将能够为记录选择日期,时间和时区,我希望所有计算都与用户选择的时区相关。

我的问题是处理用户选择的时区的最佳做法是什么。该模型使用time_zone_selectdatetime_select来表示两个不同的属性timezonescheduled_at。模型保存后,scheduled_at属性将转换为本地定义的Time.zone

当用户返回使用scheduled_at编辑datetime_select属性时,日期时间设置为已转换的Time.zone时区,而不是timezone属性。有没有一种很好的方法来处理转换为用户选择的时区?

1 个答案:

答案 0 :(得分:0)

您可以在指定的控制器或应用程序范围内的before_filter中处理此问题。见这个例子:

# controllers/application.rb
before_filter :set_user_time_zone

private

def set_user_time_zone
  Time.zone = current_user.timezone if logged_in?
end

Ryan Bates对此进行了截屏视频:Time Zones in Rails 2.1