LoginSignup
2
0

More than 1 year has passed since last update.

Rails enumの使い方

Last updated at Posted at 2021-09-07

enumとは

enumは列挙型でカラム(列)で文字列を順番に出力していくものです。

そしてそれぞれに数字を割り当てて意味を持たせます。

例えばある処理をして処理の流れを表現できます。

0が「未入力」、1が「入力中」、2が「処理中」、3が「処理済」
というように 処理の流れを表現できます。

⚫︎補足
Rubyにはenumはなくrails 4.1以降から導入されたみたいです。

enumを使うと?

Enumを使うことにより数値で修正が簡単になり、module側で変更するだけで
全体に変更が反映されます。
意味を持った文字を入れて、DB は数字で管理し保存しておくことができます。
そして値を決めることによって不正なアクセスが入らないようにします。

データベースの中身が見れるschema.rbで見てみましょう。

schema.rb

ActiveRecord::Schema.define(version: 2021_01_17_095549) do

  create_table staffs", fcharset: "utf8", force: :cascade do |t|
    t.string “name”
    t.string “job”
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
    end

これをenumにすると

app/models/staff.rb

class Staff < ApplicationRecord
enum name: {
Taro: 0,
Jiro: 1,
Saburo: 2,
Yonro: 3
}

みたいになります。

nameカラム(integer型)の中の4人の名前をそれぞれ紐づけます。
nameカラムにtaroを入れたら0がデータとして入ります。

シンボルと文字列で定義

enumはシンボルと文字列で定義ができます。


class Student < ApplicationRecord
  # シンボルで定義
  enum school_class: [ :A, :B, :C, :D ]

  # 文字列で定義
  enum blood_type: [ "A", "B", C, D ]
end


Rubyの配列と同じで添字と定数が紐付きます。

Student.create(school_class:  A)      データベースに0が保存される

Student.create(school_class: B)      データベースに1が保存される

型による使い方

integer,boolean,型による使い方、 確認、検索、更新メソッド
など他にもいろいろな使い方があります。

この資料から確認してみてください。
https://pikawaka.com/rails/enum

⚫︎参考資料
https://pikawaka.com/rails/enum
https://techacademy.jp/magazine/31545
https://web-camp.io/magazine/archives/16862
https://qiita.com/kitsunecat/items/ddc13b95814650c4471e

2
0
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
2
0