超初心者がエンジニアになるまでの力戦奮闘の軌跡

プログラミングをメインで学んだことのアウトプットブログ

テーブルにカラムを追加・削除など

概要

テーブルにカラムを追加や削除したい時などの操作をまとめます。 Railsではテーブル作成にマイグレーションファイルを作成しますが、テーブルを編集する際には過去に作成したマイグレーションファイルを編集するのではなく、変更するマイグレーションファイルを作成することによってテーブルを操作します。

カラムの追加

rails g migration Addカラム名Toテーブル名 カラム名:データ型という形でテーブルにカラムを追加します。

例)Usersテーブルにemailカラムを追加したい時

rails g migration AddEmailToUsers email:stringを実行します。

下記のファイルが作成されます。

class AddEmailToUsers < ActiveRecord::Migration[6.0]
  def change
    add_column :users, :email, :string
  end
end

これでrails db:migrateを行うとテーブルにカラムが追加されます。

カラムを削除

rails g migration Removeカラム名Fromテーブル名 カラム名:データ型という形でテーブルのカラムを削除します。

例)Usersテーブルからemailカラムを削除する

rails g migration RemoveEmailFromUsers email:stringを実行します。

下記のファイルが作成されます。

class RemoveEmailToUsers < ActiveRecord::Migration[6.0]
  def change
     remove_column :users, :email, :string
  end
end

これでrails db:migrateを行うとテーブルのカラムが削除されます。

カラムにデフォルト値を追加する

rails g migration ChangeColumnDefaultToテーブル名でデフォルト値を設定するマイグレーションファイルを作成します。

例)Articlesテーブルにstatusカラムのデフォルト値で0を追加

rails g migration ChangeColumnDefaultToArticlesマイグレーションファイルを作成します。

すると下記のファイルが作成されるので、その中にfrom: 変更前のデフォルト値, to: 変更するデフォルト値を記述します。

class ChangeColumnDefaultToArticles < ActiveRecord::Migration[6.0]
  def change
    change_column_default :articles, :status, from: nil, to: "0"
  end
end

これでrails db:migrateを行うとカラムにデフォルト値のオプションが追加されます。

カラムにindexオプションを追加

rails g migration AddIndexToテーブル名カラム名という形でテーブルのカラムにindexを追加します。

例)Usersテーブルにemailでインデックスを作成

rails g migration AddIndexToUsersEmailマイグレーションファイルを作成します。

すると下記のファイルが作成され、unique属性を追加する場合は追記します。

class AddIndexToUsersEmail < ActiveRecord::Migration[6.0]
  def change
    add_index :users, :email, unique: true
  end
end

これでrails db:migrateを行うとindexが追加されます。

テーブル名を変更

例)UsesテーブルをUsersテーブルに変更する

マイグレーションファイル作成

rails g migration ChangeUsesToUsersマイグレーションファイルを作成します。

すると下記のファイルが作成されるので中に変更するテーブル名を記述します。

class ChangeUsesToUsers < ActiveRecord::Migration[6.0]
  def change
    rename_table :uses, :users
  end
end
②モデル修正

Use.rbでモデルファイルが作成されているので、User.rbに変更します。

それに応じてファイルの中身もclass Use < ApplicationRecordからclass User < ApplicationRecordに変更。

アソシエーションの設定をしている他のモデルがあればそちらも修正していきます。

③コントローラやビューの修正

必要に応じてコントローラやビューの中身も修正します。

ここは個人個人でかなり違ってくると思うので、VScodeの検索機能などで該当するものを探してもれなく修正しましょう。

マイグレーションファイルを適用する

rails db:migrateを忘れずに行い適用させます。

参考サイト

Railsでデータベースカラムの追加を行う方法 - Qiita

Rails - データベースのカラムにindexを追加する - fv17の日記 - Coding Every Day

Rails で既存カラムにdefault オプションを追加したい - Qiita

【Ruby on Rails】テーブル名の変更方法と変更時にやること一覧&ステップ - Qiita

感想

今回はテーブル周りの変更についてまとめました。

まだまだあると思うのでまた新しく出てきたらここに追記していきます。