9
2

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 1 year has passed since last update.

migrationファイルのadd_indexは何なのか

Last updated at Posted at 2022-01-06

##add_indexとは
よくマイグレーションファイルにadd_index :~と記述があるがいまいち何でこれを書いているのか分からなかったので、調べてみた。

add_index:とは特定のカラムからデータを取得する際に、テーブルの中の特定のカラムのデータを複製し検索が行いやすいようにするための記述。

多くのデータを格納するテーブルの、格納される値がそれぞれ異なるようなカラム(unique制約のかかったカラムなど)の中で、検索がよく行われるカラム に対してadd_indexの記述を張ることで検索を簡単にしたいときに使う。

##記入法

add_index :追加したいテーブル名, カラム名, 必要ならオプション名

#記入例
class CreateBookmarks < ActiveRecord::Migration[5.2]
  def change
    create_table :bookmarks do |t|
      t.references :user, foreign_key: true, null: false
      t.references :board, foreign_key: true, null: false

      t.timestamps
    end
    add_index :users, :email, unique: true ⬅️ここ
  end
end

indexのオプションとして以下のようなものがある。

オプション 説明
:name インデックスの名前
:if_not_exists カラムがすでに存在している場合は再追加を行わないように指定
:unique trueを指定するとユニークなインデックス
:length インデックスに含まれるカラムの長さ
▶︎その他オプションはここ

##参考記事
deviseの add_index :users, :email, unique: true 記述について

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?