2016-03-23 3 views
3

質問はタイムゾーンについて昨日(here)質問は、ルビー2.2.3上で実行されているレール5で作業されていません。Rails5 - ruby​​ 2.2.3 // ActiveSupport :: TimeZoneの変更方法は?次

ActiveSupport::TimeZone.zones_map 

どこ1は、この新しいバージョンとの間で使用の違いについて読むことができますか?同じことを達成する方法は何でしょうか?

答えて

6

最良の方法は、ActiveSupportTimeZoneためcurrent source codeに見ることである。zones_map方法has been made privateので、私はあなたがRailsの5の下で、このエラーを得ていると思います:

NoMethodError: private method 'zones_map' called for ActiveSupport::TimeZone:Class 

だから今、あなたは2つのオプションがあります。とにかくプライベートメソッドを呼び出すためにsendを使用するか:

ActiveSupport::TimeZone.send(:zones_map) 

または、より良い、あなたが必要とするすべてのsuggeとして(このマップのvaluesある場合answer to your yesterday's questionに記載されています)、zones_mapをハックする必要はありません。あなたが代わりにallメソッドを使用することができます。

ActiveSupport::TimeZone.all 

sourceによると、all方法はzones_map.values.sortに相当し、send何もする必要はありませんので、それは通常のパブリックメソッドです。