LoginSignup
3
0

More than 5 years have passed since last update.

enumの元の値を参照したい

Posted at

モデルで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
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0