ノンカフェインであなたにやさしい

Ruby,Rails,HTML,CSS,Reactなど

RailsでEnum元の数値を取得する

以下の設定の場合

class User < ActiveRecord::Base
  enum role: { admin: 1, viewer: 2, other: 3 }
  ...

Rails5の場合

user = User.create(role: 1)
user.role_before_type_cast
# => 1
# もしくは
user.class.roles[user.role]
# => 1

Rails4以前は

user = User.create(role: 1)
user[:role]
# => 1

Rails5で4以前のを試すと

user = User.create(role: 1)
user[:role]
# => admin

これはつらい…

まだRails4から5に移行していない場合は注意が必要そうです。