FrozenError-无法修改冻结的字符串(红宝石版2.5以上)

时间:2019-04-23 16:55:28

标签: ruby-on-rails ruby bundler

我正在尝试将我们项目中的ruby更新到2.5及更高版本,并将捆包从1.17.2更新到2.0.1。这样做之后,在多个位置运行我们的应用程序会产生以下错误:

FrozenError - can't modify frozen String:

这是尝试在其他位置的控制器(Time.zone = current_user.location.time_zone)中设置时区的结果。

1 个答案:

答案 0 :(得分:0)

您可以将 Time.use_zone(zone) 与块一起使用,例如:

class ApplicationController < ActionController::Base
  around_action :set_time_zone

  def set_time_zone
    if logged_in?
      Time.use_zone(current_user.location.time_zone) { yield }
    else
      yield
    end
  end
end

https://api.rubyonrails.org/classes/Time.html#method-c-zone-3D