【问题标题】:Rails5 - ruby 2.2.3 // how ActiveSupport::TimeZone changed?Rails5 - ruby​​ 2.2.3 // ActiveSupport::TimeZone 是如何改变的?
【发布时间】:2016-03-23 07:43:07
【问题描述】:

昨天问了一个关于时区的问题(here),以下不适用于在 ruby​​ 2.2.3 上运行的 rails 5:

ActiveSupport::TimeZone.zones_map

在哪里可以了解这个新版本之间的使用差异?有什么方法可以达到同样的效果?

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    最好的方法是在ActiveSupport 中查看TimeZonecurrent source codezones_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
    

    根据sourceall方法等价于zones_map.values.sort,它是一个普通的公共方法,所以不需要send任何东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 2018-12-11
      • 2012-10-08
      • 1970-01-01
      相关资源
      最近更新 更多