我刚刚更新到 rails-4-1-stable 并且遇到了以下错误:
NoMethodError: undefined method `map' for #<ThreadSafe::Cache:0x007fca66162668>
错误是由这行代码(在我的用户模型中)引起的,我想在其中设置所有时区以进行验证:
validates :time_zone, inclusion: { in: ActiveSupport::TimeZone.zones_map.map{ |el| el.last.name }, allow_nil: true }
为什么会发生这种情况,最好的解决方法是什么?
感谢帮助
最佳答案
Gary Wright 对 sjobe's link 的评论钉牢它, ActiveSupport::TimeZone.zones_map
的实现在 Rails 4.1 中已经改变,现在返回一个 ThreadSafe::Cache
对象,它不响应 include?
方法。
您可以通过以下方式修复它:
validates :time_zone, inclusion: { in: ActiveSupport::TimeZone.zones_map.keys }
其中 ActiveSupport::TimeZone.zones_map.keys
是一个时区名称数组,它确实响应include?
方法
关于ruby-on-rails - rails 4-1 错误:ThreadSafe::Cache 的未定义方法 `map',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22748299/