マイグレーション
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