Rails5でenum定義したカラムの元の値を取得

  • 9
    いいね
  • 2
    コメント

自分用メモです。
でも、きっと同じことにぶち当たる人はいるはずw

例えば・・・・

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

  ...

こんな感じで定義されていたとして、

user = User.create(role: 1)

そのオブジェクトを作り、roleに割り当てた1という値を取りたい場合、
Rails4までは、

rails4
user[:role]
=> 1

だったのが、Rails5だと・・・、

rails5
user[:role]
=> 'admin'

な・・・なんだと・・・!?

Rails5でenumの元の値を取得する場合は、

rails5
user.role_before_type_cast
=> 1

または、

user.class.roles[user.role]

とするらしい。(コメント頂きました!!)
うーーん、面倒だな・・。他のも方法ありそうなんだけどなぁ・・・
情報求む!!