モデルでenum
class Model < ApplicationRecord
extend Enumerize
enumerize :gender, in: { male: 1, female: 2 }
end
普通に参照
Model.first.gender
=> "female"
enumかかる前の値を参照(rails5)
Model.first.gender_before_type_cast
=> 2
ちなみに、
モデルで、genderをnumericality
でvalidationしてると・・・
class Model < ApplicationRecord
extend Enumerize
validates :gender, numericality: true
enumerize :gender, in: { male: 1, female: 2 }
end
updateするとき、numericality
でひっかかる。
Model.first.update(hoge: "ほげほげ")
=>ActiveRecord::RecordInvalid:
バリデーションに失敗しました:genderは数値で入力してください
enumにしてれば、数値で変えても文字で変えても適切に変更されるのでnumericality
は外す。
Model.first.gender
=> "female"
Model.first.update!(gender: 1)
=> true
Model.first.gender
=> "male"
Model.first.gender_before_type_cast
=> 1
Model.first.update!(gender: "female")
=> true
Model.first.gender
=> "female"
Model.first.gender_before_type_cast
=> 2