環境
Ruby 2.5.0
Rails 5.2.0
以下のようなmodelがあったときに
1 2 3 |
class Test enum category: { count_less_5min: 0, count_5to10min: 1, count_over_10min: 2 } end |
1 2 3 4 5 6 |
ja: enums: test: count_less_5min: 5分未満 count_5to10min: 5分以上10分未満 count_over_10min: 10分以上 |
インスタンス化されたModelにおいて、enum化されたカラムのi18n値を取りたい場合は
1 |
Test.new.category_i18n |
これでいいのだが、インスタンスと無関係に特定のkeyに対応するvalueをi18nで取得したいときにどうすればいいのかわからなかった。
で、色々調べて試したところこれで取れた。
1 2 3 4 5 6 7 8 |
class Test enum category: { count_less_5min: 0, count_5to10min: 1, count_over_10min: 2 } # keyに対応するcategoryのi18n_valueを取得する def self.get_time_category_i18n(key) self.time_categories_i18n[key] end end |
複数形にしてkeyを指定するんですね。