0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails】enumの使い方 

Last updated at Posted at 2020-06-14

##はじめに
RubyやRailsで、Enumの使い方を
忘れない為のメモ。

##enumとは?
「Enum」は「列挙型」のこと。
・DBにはint型やboolean型で登録され、数値に紐付く任意のキー名を付けることができる。
・ソースコードでは、紐付くキー名を用いれる。

利点
・データ型をintegerにするとDBに数字で登録されるが、数字だけだと数字が持つ意味が共有出来ない。
・文字列として定義していたらタイポする可能性が多くなるが、enumを使うとその心配がない。
・修正の際に楽。

##定義方法
モデルに対してenumを定義する必要があります。
定義方法は、2通りあります。
1.定義のみ
2.定義に数値を指定
#定義のみ指定
配列で定義をします。定義順に0から順に紐付けされます。
下記の例では昨日→0、今日→1、明日→2と自動的に振り分けされる。
enum カラム名:[:付けたいキー名]でenumを指定していきます。

※[ ]なのと : の位置に注意

モデルのファイル
  enum カラム名:    [ :昨日, :今日, :明日 ]
           ↑定義するもの

##定義に数値を指定
enum カラム名:{付けたいキー名:対応する数値}でenumを指定していきます。
※{ }なのと : の位置に注意

モデルのファイル
  enum カラム名:    { 昨日: 0, 今日: 1, 明日: 2 }
           ↑定義するもの

##viewでの使用
下の記述でselectボックス作成ができます。
カラム名,カラム複数型は同じカラムでenumの後に記述したカラム
モデル名は定義の際に記述したモデル

viewファイル
 <%= select :カラム名, :name, モデル名.カラム名複数形.keys.to_a, include_blank: true %>

##終わりに
・私はステータスの変更や連動してステータスが変更される時に、使いました。
・コントローラーで、ifなどで比較する場合は数字ではなく定義した文字で比較できると思います
例) if 比較したい情報 == "昨日"
例) 探したい情報.where(カラム名: "今日").count など

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?