📑

マイグレーション

2024/04/26に公開

Railsのマイグレーションは、データベースのスキーマをバージョン管理する強力なツールです。
以下は、Railsのマイグレーションを使用してテーブルを作成し、カラムを追加・削除する方法についてのガイドです。

テーブルの作成
新しいテーブルを作成するには、まずマイグレーションファイルを生成します。例えば、「lists」という名前のテーブルを作成する場合、以下のコマンドを実行します。

$ rails g migration CreateLists

次に、生成されたマイグレーションファイルを編集して、テーブルとそのカラムを定義します。マイグレーションファイルは db/migrate ディレクトリにあります。
マイグレーションを実行してテーブルをデータベースに適用するには、以下のコマンドを使用します。

$ rails db:migrate

成功すると、以下のような出力が表示されます。

== 2020110070641 CreateLists:
migrating======================================
-- create_table(:lists)
   -> 0.0016s
== 2020110070641CreateLists: migrated (0.0024s) =============================$ 

カラムの追加
既存のテーブルに新しいカラムを追加するには、新しいマイグレーションファイルを生成します。例えば、「lists」テーブルに文字列型の「name」というカラムを追加する場合、以下のコマンドを実行します。

$ rails g migration AddNameToLists name:string

そして、マイグレーションを実行します。

$ rails db:migrate

カラムの削除
カラムを削除するには、新しいマイグレーションファイルを生成します。例えば、「lists」テーブルから「name」
カラムを削除する場合、以下のコマンドを実行します。

$ rails g migration RemoveNameFromLists name:string

次に、マイグレーションを実行します。

$ rails db:migrate

マイグレーションの管理
マイグレーションの現在のステータスを確認するには、以下のコマンドを使用します。

$ rails db:migrate:status

最後に実行されたマイグレーションを一つ戻すには、以下のコマンドを使用します。

$ rails db:rollback

注意としてはその日に複数migareteファイルを作成している場合、1つだけではなく複数戻ります。

戻り、修正後は、

$ rails db:migrate

必ずこれをしてください。

addして増やしたくない、既存のマイグレーションファイルに追記したい場合は、
カラムを増やしたい特定のマイグレーションファイルに直接記載後、

$ rails db:migrate:down VERSION=マイグレーションファイルの日時番号
$ rails db:migrate:up VERSION=マイグレーションファイルの日時番号

を行います。
日時番号がわからない!と言う方は上のもので言うと、2020110070641 ここの部分です。

最後には必ず、

$ rails db:migrate:status

を行い、すべてこのようにUPになっているか確認してください

Running via Spring preloader in process 41040

database: db/development.sqlite3

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20240401043435  Create 〇〇
   up     20240401043507  Create 〇〇
   up     20240401043523  Create 〇〇
   up     20240401043726  Create 〇〇

Discussion