Edited at

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

More than 1 year has passed since last update.

自分用メモです。

でも、きっと同じことにぶち当たる人はいるはず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]

とするらしい。(コメント頂きました!!)

うーーん、面倒だな・・。他のも方法ありそうなんだけどなぁ・・・

情報求む!!