【发布时间】:2016-03-23 07:43:07
【问题描述】:
昨天问了一个关于时区的问题(here),以下不适用于在 ruby 2.2.3 上运行的 rails 5:
ActiveSupport::TimeZone.zones_map
在哪里可以了解这个新版本之间的使用差异?有什么方法可以达到同样的效果?
【问题讨论】:
标签: ruby-on-rails ruby
昨天问了一个关于时区的问题(here),以下不适用于在 ruby 2.2.3 上运行的 rails 5:
ActiveSupport::TimeZone.zones_map
在哪里可以了解这个新版本之间的使用差异?有什么方法可以达到同样的效果?
【问题讨论】:
标签: ruby-on-rails ruby
最好的方法是在ActiveSupport 中查看TimeZone 的current source code:zones_map 方法has been made private,所以我猜你在 Rails 5 下遇到了这个错误:
NoMethodError: private method 'zones_map' called for ActiveSupport::TimeZone:Class
所以现在你有两个选择:要么使用send 调用私有方法:
ActiveSupport::TimeZone.send(:zones_map)
或者,更好的是,如果您只需要这张地图的values(正如answer to your yesterday's question 中所建议的那样),那么就没有必要绕过zones_map。您可以改用all 方法:
ActiveSupport::TimeZone.all
根据source,all方法等价于zones_map.values.sort,它是一个普通的公共方法,所以不需要send任何东西。
【讨论】: