无法通过Time.use_zone更改Time.zone

时间:2018-03-02 07:34:41

标签: ruby-on-rails timezone ruby-on-rails-5

我正在尝试设置我的rails应用程序以使用用户模型中设置的时区。用户模型将时区保存为字符串,然后在应用程序中我从当前用户时区设置时区,如本页所述:https://www.varvet.com/blog/working-with-time-zones-in-ruby-on-rails/

around_action :user_timezone, if: :current_user

private def user_timezone Time.use_zone(ActiveSupport::TimeZone.new(current_user.timezone)){ yield } end

不幸的是,这似乎对应用的时区设置没有任何影响。当我在视图中打印日期时,他们使用默认的应用程序时区并忽略用户时区。如果我只是在视图中打印Time.zone,它会打印默认的应用程序时区而不是用户时区。

我做错了什么或者是否有更好的方法在应用中设置用户时区?

1 个答案:

答案 0 :(得分:0)

看起来我只是在我的数据库中存储错误的字符串以用于时区。如果我从选择的ActiveSupport :: TimeZone.all设置用户时区,那么当我将该选择解析为ActiveSupport :: TimeZone.new(current_user.timezone)时,它就可以工作。