【Rails】enumでvalueからkeyを取得する
はじめに
Railsでは、データベース内の列に対してenum(列挙型)を定義することができます。enumを使用すると、列の値を特定のシンボルにマッピングすることができます。
この記事では、enumを設定し、enumの値からキーを取得する方法について説明します。
enumの定義
まず、enumを使用するためには、モデル内でenumメソッドを使用して列挙型を定義する必要があります。以下は、例としてUserモデル内にenumを定義する方法です。
class User < ApplicationRecord
enum status: [:active, :inactive, :pending]
end
上記の例では、Userモデルのstatus列挙型を定義しています。列挙型のキーはシンボルで表され、対応する値は0から始まる整数です。
列挙型の値からキーを取得する方法
enumを使用すると、列挙型の値からキーを取得するためのいくつかの方法があります。
keyメソッド
keyメソッドを使用すると、列挙型の値から対応するキーを取得できます。以下は、例としてUserモデルのstatus列挙型の値からキーを取得する方法です。
user = User.new(status: :active)
key = User.statuses.key(user.status)
上記の例では、Userモデルのstatus列挙型の値が:activeである場合、key変数には:activeが代入されます。
invertメソッド
invertメソッドを使用すると、列挙型のマッピングを逆にしたハッシュを取得できます。このハッシュを使用すると、値からキーを取得することができます。以下は、例としてUserモデルのstatus列挙型の値からキーを取得する方法です。
user = User.new(status: :active)
key = User.statuses.invert[user.status]
上記の例では、Userモデルのstatus列挙型の値が:activeである場合、key変数には:activeが代入されます。
まとめ
Railsでenumを使用して列挙型を定義し、enumの値からキーを取得する方法について説明しました。keyメソッドやinvertメソッドを使用することで、列挙型の値からキーを簡単に取得することができます。enumを活用して、コードの可読性を向上させるために列挙型を活用してみてください。
参考
Discussion