Railsのenumをenum_helpで日本語化

enumとは

enumとはRails 4.1から導入されたActiveRecordの機能です。enumerateの略で列挙型という意味です。一例ですが、下記のように状態管理するのに便利だったりします。

class Post < ActiveRecord::Base
  enum status: {
    draft: 0,
    reviewed: 1,
    published: 2
  }
end

そしてこのようにアクセスすることができます。

Post.statuses
=> {"draft"=>0, "reviewed"=>1, "published"=>2}

enum_help

例えば、上記のPostのstatusを管理画面にて変更する機能を実装する場合、enumのキーを日本語で表示したいかと思います。そこで役に立つのがenum_helpです。GitHubのリポジトリを見る限り、それなりにスターが付いていますし、メンテも行われているようです。

インストール

Gemfileにenum_helpを追加します。

gem 'enum_help'

言語設定を追加

config/locales/ja.ymlに下記を記述してください。ファイルがない場合は作成してください。

ja:
  enums:
    post:
      status:
        draft: 下書き
        reviewed: レビュー済み
        published: 公開

確認

上記の作業が完了したら、サーバーを再起動してください。このように日本語で表示できるようになりました。

post.status
=> "published"
post.status_i18n
=> "公開"
post.statuses_i18n
=> {"draft"=>"下書き", "reviewed"=>"レビュー済み", "published"=>"公開"}

まとめ

enum_helpを利用することで簡単に日本語化できましたね。Railsのi18nの機能を用いていますので、日本語だけでなく他の言語にも対応することができます。また、モデルにビュー向けの設定を書かなくて済むので責務の分離ができてうれしいですね。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする