Rails

ActiveRecord Enumの概要を確認する

 

Railsガイドの初見ではイメージが掴めなかったので、他のサイトや書籍も読んでみました。


enum

「列挙型」を意味し、「イーナム」と読まれることが多いそうです。



語源はenumerate( injúːmərèit イニューマレイト 列挙する)。


active recordが提供するenumは、数値を持つカラムに対してプログラム上で扱える別名を与えるものです。


 

どのようなシーンで使用するか

 


特に、yes/noだけではないが、少数のバリエーションが存在する場合に有用です。



例えば、「販売開始前(0)・販売中(1)・販売終了(2)」や「発送前・配達中・発送済み」、血液型「A、B、O、AB」などです。



文字列ではなく、数値で扱うほうが効率的ですが、マジックナンバーは避けたい。



マジックナンバーとしないためには定数を定義することになりますが、定義と数値への変換という処理が必要になってきます。




そのようなときに役に立つのがactive recordのenum型です。




enumでは、1つのカラムに定義した複数の定数のみを入れることができる便利な機能です。



先程の例「販売開始前(0)・販売中(1)・販売終了(2)」でいえば、その他のステータスは設定できません。



また、「販売開始前・販売中・販売終了」の名前で扱うことができますが、DBには対応した数字「0、1、2」で登録されるようになります。



述語メソッドで状態を問い合わせることもできます。

 

例) book.now_on_sale?



以下の書籍を参考にしました。

 

 

 




また、こちらのサイト「【Rails】 enumチュートリアル」もとてもわかりやすかったです。




上記に目を通した後は、Railsガイドの内容がポイントを絞ってわかりやすく表現されていると感じられました。



 

 

参照リンク | Rails ガイド enum Active Record クエリインターフェイス

 

-Rails