ruby-on-rails - rails 4-1 错误:ThreadSafe::Cache 的未定义方法 `map'

标签 ruby-on-rails activerecord ruby-on-rails-4

我刚刚更新到 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/

相关文章:

ruby-on-rails - Mongoid accepts_nested_attributes_for 问题

ruby-on-rails - 多个 Elasticsearch 索引

ruby-on-rails - rails : id field is nil when calling Model. 新

php - Yii2 从 afterSave 触发模型/记录更新

ruby - Rails:猴子修补 ActiveRecord::Base 与创建模块

mysql - 仅使用开发 mysql 数据库,不在 Rails 中进行测试或生产

ruby-on-rails - 渲染部分时出现未定义方法错误

ruby-on-rails - rails ActiveRecord : Multiple conditions in find

ruby-on-rails - 在Rails 4.2.4中的 Controller 中使用助手

ruby-on-rails - rails 4 : How to change the output display page by page with helper