🍣

enum

2024/01/26に公開

はじめに

終盤に差し掛かったところで久しぶりにenumを使用したのでまとめたいと思います。

enumって?

語源は enumeration(列挙)で、
名前を整数の定数に割り当てるために使われるデータ型の一つ。

※migration fileに記述するときのデータ型は、integer型で、
     defaultの設定を必ずしましょう。

enumを日本語化させ実装するには: i18nとYAMLfile

enumで定義された属性の値を、日本語で表示するためには、少し設定が必要。

ActiveRecord::Enum の仕組みで簡単に実装自体はできるのだが、
直接数値と日本語を紐づけると、一部使えなくなるメソッドが存在する。 
=> i18nを使用する。

  • i18n(internationalization)とは
    多言語対応を可能にするためのライブラリ。
    アプリケーション内のテキストやメッセージを翻訳可能な形式で記述し、
    翻訳用のデータベースを管理することにより実現している。
    = YAML(ヤムル)ファイルの記述を行うよ!

  • YAML(ヤムル)ファイルとは
    テキストファイルの一種で、人間が読みやすく、コンピュータが処理しやすいデータの構造化フォーマット。
    主に設定ファイルやデータファイルとして使用される。
    今回はi18nライブラリを使用していくため、各言語の翻訳データをYAML形式で記述していく。

実装方法

Gemfile
gem "enum_help"

bundle installを忘れずに

order.rb
 enum payment_method: { credit_card: 0, transfer: 1 }

ここの段階では、英語表記です。(日本語では書きません。)

  • 日本語対応
config/application.rb
config.i18n.default_locale = :ja 
  • ymlファイルを作成

日本語対応にするため、今回は, config/locales フォルダに ja.yml というファイルを作成するよ
基本型

ja: # 日本語の設定
    enums: # enumの設定
      [モデル名]:
        [カラム名]:
          [enumで番号と紐付けた要素]
          [enumで番号と紐付けた要素]:# 要素の数だけ追加

Discussion