コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

Railsにてモデルの内容を人間の読める形式に変換する human 系の処理

あ、これi18nなのねという感じ。

環境

$ bin/rails -v
Rails 5.2.2

概要

i18nに沿って、設定したlocaleに対応するモデル情報を表示する

やり方

対応する情報を設定する

i18nの形式で情報をymlに書き込む。日本語情報を作りたい場合は config/locales/ja.yml に以下の内容を用意する。

ja:
  activerecord:
    models:
      {{モデル名}}: {{表示させたい文字列}}
    attributes:
       {{モデル名}}:
         {{カラム名}}: {{表示させたい文字列}}

例えば User のモデル名に ゆーざ 、そのカラムである nameおなまえ を設定したい場合は以下

ja:
  activerecord:
    models:
      user: ゆーざ
    attributes:
      user:
        name: おなまえ

取得の仕方

以下の書き方で文字列が取得できる

User.model_name.human
# => "ゆーざ"

User.human_attribute_name(:name)
# => "おなまえ"

ちなみに設定が書かれていないものはそのままモデル名

Message.model_name.human
# => "Message"

参考リンク