今回はenum(列挙型)の使い方について見ていこうと思います。
enumとは
まず、そもそもenumとは?
って、思う方もいらっしゃると思いますので、簡単に説明します。
enumとは、ActiveRecordが提供する数値(もしくは文字列、真偽値)のカラムに対してプログラム上で扱える別名を与えるものです。
enumを使うための準備
今回は、ユーザーテーブルを作成し、roleカラムを作成して説明を行おうと思います。
enum定義を行う方法は、integer型で行う場合、stringで行う場合、boolean型で行う場合の3つがあります。
一般的によく使われるのがinteger型になります。
ですので、integer型で今回は説明をしていこうと思います。
まずはアプリケーションを作成しましょう!
今回使用するバージョンは
- Ruby 2.6.5
- Ruby on Rails 6.1.4.1
を使用します。
アプリケーションを作成して、ディレクトリをプロジェクトに移動します。
enum定義をinteger(数値型)で行う場合
まずは、integer型で定義する場合です。
上記のコードを見ていただければわかるように、モデルのバリデーションだけではなく、DB側にも制約をつけてやります。
まず、全てのカラムに対して、null: falseで空の状態で作成されないように設定します。
eamilカラムには、unique: trueとしてやることで、一意制約を付与しています。
roleカラムには、default: 0ということで、今回enumで定義した定数を何も指定しなかった場合に、0の値が入って保存されるよう設定しています。
それでは、マイグレーションを実行しましょう。
次の章では、実際にenumを定義して使ってみます。
enumの使い方
今回はユーザーに、general(一般), author(著者), editor(編集者), admin(管理者)としてみました。
それぞれキーに呼び出したい定数を書いて、バリューにそれに対応させたい数値を記述します。
このように定義することで、コンソール上で呼び出すことができます。
値を確認したいときはこのように確認します。
また、値を変更したい時はこのようにすると変更することができます。
enumの値の末尾に「!」をつけると、そのenumの値を更新することができます。
また、enumで定義している値を確認したいときは、モデル名.enumのカラム名の複数形で参照することができます。
最後に
今回はRailsのenumの使い方について見てきました。
enumの実装はよく出てくるので、しっかり覚えていきましょう。
また、enumで定義した値を日本語で出力するenum_helpというライブラリもあるので、興味がある方は調べてみると良いかもしれません。
この記事が皆さんの日々の学習に役立つと幸いです。
それではまた、次回の記事でお会いしましょう!
- 無料・簡単・片手でホームページを作成できる自社サービス Rakwi
- Web制作とアプリ開発を学べるオンラインプログラミング講座 Upstairs
- 開発,DX推進支援サービス スタートアッププラン