Rails非常棒,它将使用Time.zone
在应用程序中支持整体时区。我需要能够支持用户为记录选择的时区。用户将能够为记录选择日期,时间和时区,我希望所有计算都与用户选择的时区相关。
我的问题是处理用户选择的时区的最佳做法是什么。该模型使用time_zone_select
和datetime_select
来表示两个不同的属性timezone
和scheduled_at
。模型保存后,scheduled_at
属性将转换为本地定义的Time.zone
。
当用户返回使用scheduled_at
编辑datetime_select
属性时,日期时间设置为已转换的Time.zone
时区,而不是timezone
属性。有没有一种很好的方法来处理转换为用户选择的时区?
答案 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