エンジニアのサブルーチン

あまり注目されない組み込みのシステムエンジニアをやっています。エンジニア業界のこととか、勉強したこととかを不定期に更新していきます。

固定の値を扱う時便利なEnumについて解説

Enumとは?

Enum(列挙型)とは複数の定数を一つにまとめられる便利な型です。
Enumはモデルで定義します。
f:id:code_sugar:20190731165839p:plain
このように定数bad,nomal,goodはそれぞれ0,10,20という数値と紐づいている。(数値が飛び飛びなのは、新しく項目を追加する場合を考慮している。)

statusカラムはあらかじめinteger型、boolen型を指定して置かなければなりません。

それによってDB上ではint型,boolen型で保存されます。先ほど定義した数値がそれぞれ保存されますが、DBから取り出すとき、Enumで紐づけされた文字列が数値の代わりに取り出されます。

Enumを使うメリット

  • 数字として管理してるから静的オブジェクトとして扱えるので安全性が高い
  • 文字列が変わっても数値で管理しているので変更しやすい
  • 可読性が良い

デメリット

実際に使ってみる

あらかじめusersコントローラーのtestアクションでUserクラスのインスタンスをnewしています。
f:id:code_sugar:20190731170007p:plain
これによってenumで定義した文字列がセレクトボックスが表示される
f:id:code_sugar:20190731170657p:plain