初学者の備忘録
初学者の備忘録です。今回はenum編
enumとは
enum とは、数値に意味を持たせることができるものです。数値に意味を持たせることのメリットは以下の通りです。
【メリット】
・決められた数値以外の登録が出来ないようにすることで安全性が高まる
・専用テーブルを作成しなくてもいい
・データベースに格納する時に、数値型の方がデータサイズが小さくなる
例えば支払い方法などにユーザー側がどの支払い方法を選択するか手入力するのではなく、enumを使用して選択式にしてあげることでクレジットカード、着払い、入金などの間違いが減るなどといったことです。
導入
【1】 Gem
enumはenum_help
というGemなのでGemfileにenum_helpを記述します。最後の行で構いません。
:
:
gem "enum_help"
【2】 インストール
記述後、enum_help をインストールするために bundle install
を行いましょう。
$ bundle install
導入は以上です。次は実装です。
実装
【1】 定義
enumを使用するModelに定義づけして、数値と文字列の紐付けをします。
今回は支払い方法でenumを使用した場合を例として進めていきます。
enum payment_method: { credit_card: 0, transfer: 1,cash on delivery: 2 }
このように定義することで0の場合はクレジットカード、1の場合は銀行振込、2の場合は代引きという意味になります。
ただこのままだと日本語に対応していないので次は日本語対応の処理をしていきます。
【2】 日本語
日本語に対応させるために、config/application.rb に以下を追記します。
:
:
module NaganoCake
class Application < Rails::Application
:
:
+config.i18n.default_locale = :ja
:
:
end
end
この記述により、Rails アプリケーションのデフォルトの言語が日本語となり
次の手順で作成するymlファイルをもとに日本語化を行うといった流れとなります。
【3】 yml
config/locales フォルダに ja.yml というファイルを作成しましょう。このファイルに次のように記述します。
ja:
enums:
order:
payment_method:
credit_card: "クレジットカード"
transfer: "銀行振込"
補足
ymlファイルの基本的な記述方法はになります。ymlファイルを記述するときはいくつか注意点があります。
- インデントを整える。ymlファイルはインデントに厳しいです。ズレていると対応できないのでルール守ってインデントを整えましょう。
- 同じ名前を使用してはいけません。例えばenumを使用するカラムが同じModelに複数存在していたとします。その時に同じModel名を二つ使用してしまうと日本語対応ができなくなります。同じModelを使用したなら同じ場所に記述しましょう。
この点を注意しないと日本語対応しない場合がありますので、もし日本語対応してないと思ったらymlファイルのコードが大丈夫か確認しましょう。
他の日本語対応
enumの日本語対応のymlファイルの記述はしましたが、ymlファイルに記述するとバリデーションや、devise関係も日本語化できます。 ここでは長くなるので別枠で投稿させていただきます。 [ymlファイル日本語化]()【4】 呼び出し
ここまでで日本語対応の準備はできましたので、呼び出してみましょう。
Order.payment_methods_i18n
上記のようにカラム名_i18nと記述することで日本語でenumを呼び出すことができます。
最後に
以上がenumの基本的な使い方になります。
ここから使用方法によっては多少アレンジしないといけない場合がありますが、私もまだまだ学習中の身なのでここに投稿できるほど理解しきれていません。
一緒に頑張っていきましょう!