1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails】取得したenumの値とモデルのenumを比較する方法

Posted at

取得したenumの値とモデルのenumを比較することができず、詰まったので、同じ轍は踏まないように情報共有したいと思います。

準備

User.rbでenumを設定

enum sex: {
  # 無回答
  no_answer: 0,
  # 男性
  male: 1,
  # 女性
  female: 2,
}

rails console

# enumを確認
User.sexes
=> {"no_answer"=>0, "male"=>1, "female"=>2}
User.sexes[:male]
=>1

# インスタンスを取得
user = User.find(4)

# インスタンスのenumを確認
user.sex
=>"male"

詰まったこと

enumの比較ができない・・・

実現したいこと

「インスタンスのsexがmaleであるとき」の条件式が作りたい。

試したこと

user.sex == User.sexes[:male]
=> false

・・・できない。
それもそのはず

user.sex
=>"male"
User.sexes[:male]
=>1

enumのkeyとvalueが逆ならいいのに・・・
じゃあこうしてやれ

user.sex == User.sexes.invert[0]
=> true

結果うまくいったが、0がマジックナンバーみたいで、値の意味がわからない。リファクタリング必至。

解決策

User.sexes[:male] == User.sexes[user.sex]
1
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?