enum

enumの定義

カラム(Integer型)に入る整数値と変数名を紐付ける(例:管理者権限)。

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

enumを定義するとできること

# インスタンスの値を変数名で取得
@user.role
=> "general"

# インスタンスに変数名で値を格納
@user.role = "admin"

#インスタンスの値を判定
@user.admin?
=> false

# enum定義を参照
User.roles
=> {"general"=>0, "admin"=>1}

# 変数名に割り当てられている値を取得
User.roles[:general]
 => 0

enumi18n対応

gem 'enum_help'を利用

gem 'enum_help'
% bundle install

(カラム名)_i18nで属性値やenum定義を翻訳して取得できる。

@user.role_i18n => "管理者"  # 単数形
User.roles_i18n => {"general"=>"一般", "admin"=>"管理者"}  # 複数形