『RubyOnRails』enumの使い方


初めに

プログラミングを始めて4ヶ月の初学者です。
今回enumを使う機会があったのでメモを残します。

環境

・Ruby '2.3.8'
・Rails '5.2.3'

emunとは

enum(イーナム)はRails4.1から導入された機能です。

enumを使用すると以下の様な事が出来ます。
DBの中では数字を保存させる。
Viewでは文字を表示させる。

例:日本というテーブルに地方というカラムがあったとします。
enumを使用しない場合は、地方カラムに関東、関東、九州、四国の様に文字が登録されます。
しかし、enumを使用した場合は関東は1、関西は2、四国は3、九州は4と定義する事で、DBの中は1、1、4、3の様に保存され、Viewでは対象の文字を表示させる。

emunの利点

・データ型をintegerにするとDBに数字で登録されるが、数字だけだと数字が持つ意味が共有出来ない。
一人で開発する時は自分だけが意味を理解していればいいが、チーム開発だとチーム内で意味が理解できていないといけない。
そこで、enumを使用する事で数字が何を表しているかがチーム内で共有出来る。

emunの使用方法(モデル編)

対象にモデルに記述します。
今回はroomというテーブルのcategoryカラムにenumを使用したいと思います。

room.rb
enum category: { 喜び: 0, 悲しみ: 1, 不思議: 2, 憧れ: 3, 恐怖: 4, 後悔: 5, 期待: 6, 怒り: 7 }

これで、数字と文字を関係付ける事ができました。

emunの使用方法(view編)

今回はプルダウン形式で表示させたいと思います。

room.rb
<%= form_for(@room) do |f| %>
  <%= f.select :category, Room.categories.keys.to_a, {} %>
<% end %>

これでview側で表示させる事が出来ます。

最後に

分かりにくい記事かもしれませんが、初学者の助けになれば幸いです。