0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

enum

Posted at

初学者の備忘録

初学者の備忘録です。今回はenum編

enumとは

enum とは、数値に意味を持たせることができるものです。数値に意味を持たせることのメリットは以下の通りです。

【メリット】
・決められた数値以外の登録が出来ないようにすることで安全性が高まる
・専用テーブルを作成しなくてもいい
・データベースに格納する時に、数値型の方がデータサイズが小さくなる

例えば支払い方法などにユーザー側がどの支払い方法を選択するか手入力するのではなく、enumを使用して選択式にしてあげることでクレジットカード、着払い、入金などの間違いが減るなどといったことです。

導入

【1】 Gem
enumはenum_helpというGemなのでGemfileにenum_helpを記述します。最後の行で構いません。

Gemfile
   :
  :
  gem "enum_help"

【2】 インストール
記述後、enum_help をインストールするために bundle install を行いましょう。

Gemfile
   $ bundle install

導入は以上です。次は実装です。

実装

【1】 定義
enumを使用するModelに定義づけして、数値と文字列の紐付けをします。
今回は支払い方法でenumを使用した場合を例として進めていきます。

app/model/必要ファイル
   enum payment_method: { credit_card: 0, transfer: 1,cash on delivery: 2 }

このように定義することで0の場合はクレジットカード、1の場合は銀行振込、2の場合は代引きという意味になります。
ただこのままだと日本語に対応していないので次は日本語対応の処理をしていきます。

【2】 日本語
日本語に対応させるために、config/application.rb に以下を追記します。

config/application.rb
   :
    :

module NaganoCake
  class Application < Rails::Application  
  :
  :
  
  +config.i18n.default_locale = :ja

  :
  :
  end
end

この記述により、Rails アプリケーションのデフォルトの言語が日本語となり
次の手順で作成するymlファイルをもとに日本語化を行うといった流れとなります。

【3】 yml
config/locales フォルダに ja.yml というファイルを作成しましょう。このファイルに次のように記述します。

config/locales/ja.yml
   ja:
    enums:
      order:
        payment_method:
          credit_card: "クレジットカード"
          transfer: "銀行振込"
補足 ymlファイルの基本的な記述方法は

F968DAB4-0CFE-4F05-931B-10783E6339A9.jpeg

になります。ymlファイルを記述するときはいくつか注意点があります。

  • インデントを整える。ymlファイルはインデントに厳しいです。ズレていると対応できないのでルール守ってインデントを整えましょう。
  • 同じ名前を使用してはいけません。例えばenumを使用するカラムが同じModelに複数存在していたとします。その時に同じModel名を二つ使用してしまうと日本語対応ができなくなります。同じModelを使用したなら同じ場所に記述しましょう。
    この点を注意しないと日本語対応しない場合がありますので、もし日本語対応してないと思ったらymlファイルのコードが大丈夫か確認しましょう。
他の日本語対応 enumの日本語対応のymlファイルの記述はしましたが、ymlファイルに記述するとバリデーションや、devise関係も日本語化できます。 ここでは長くなるので別枠で投稿させていただきます。 [ymlファイル日本語化]()

【4】 呼び出し
ここまでで日本語対応の準備はできましたので、呼び出してみましょう。

app/views/必要ファイル
   Order.payment_methods_i18n

上記のようにカラム名_i18nと記述することで日本語でenumを呼び出すことができます。

最後に

以上がenumの基本的な使い方になります。
ここから使用方法によっては多少アレンジしないといけない場合がありますが、私もまだまだ学習中の身なのでここに投稿できるほど理解しきれていません。
一緒に頑張っていきましょう!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?