Help us understand the problem. What is going on with this article?

『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側で表示させる事が出来ます。
スクリーンショット 2019-08-23 0.00.16.png

最後に

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

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away