【Rails】enumについて

はじめに

enumについて記述していきます。

enumとは?

 enumとは、1つのカラムに指定した複数個の定数を保存できる様にする為のモノです。

例 user.rb

 class User < ApplicationRecord
  enum role: { general: 0, admin: 1 }
end

このenumを使うと指定した複数個の定数以外の値は保存できない様にしたり、カラムに指定した定数が入っているレコードを取り出すのが容易になったりと多くのエンジニアが頻繁に使用する大変便利なメソッドです。

enumの定義方法

  1. テーブルにenum用のカラムを用意する 
  2. モデルにenumの定義をする

マイグレーションファイル

class AddRoleToUsers < ActiveRecord::Migration[5.2]
  def change
    add_column :users, :role, :integer, null: false, default: 0
  end
end

これでuserにroleという役割カラムを作成しました。integer型なので整数しか入りません。 enumはこの数値に定数を与えることができます。

それが先ほど例で出したものです。

user.rb

 class User < ApplicationRecord
  enum role: { general: 0, admin: 1 }
end

つまり、新規作成したuserは基本0の値が入るのでroleカラムにgeneralが入ります。