LoginSignup
1
2

More than 3 years have passed since last update.

Railsのマイグレーション関連のコマンドをまとめてみた

Posted at

開発環境

・Rails6.0.0

マイグレーションファイルの生成とテーブル作成

マイグレーションファイルの生成は次の2パターン

①モデルを生成して自動で作られる場合

【コマンド】rails generate model モデル名
これにより、「db/migrate」の中に自動的にマイグレーションファイルが生成される。

②自分で作る

既存のテーブルにカラムを追加したい場合など。
(例)usersテーブルにnameカラム(型:string)を追加したい場合
【コマンド】rails generate migration add_name_to_users name:string

テーブルの作成

【コマンド】rails db:migrate
これでマイグレーションファイルの内容がテーブルに反映される。
結果はSequel Proなどでデータベースを更新して確認できる。

ちなみにターミナル上でマイグレーションファイルがテーブルに反映されているか確認することもできる。
【コマンド】rails db:migrate:status
実行結果
「Status」が「up」になっていればテーブルに反映されている状態、「down」になっていればまだmigrateされていない状態です。

マイグレーションを取り消したい時

開発中に、マイグレーションファイルの編集が完了していないのにrails db:migrateを先走って実行してしまった場合など。
パニックにならずに以下のコマンドを実行しましょう。
【コマンド】rails db:rollback

これにより上の画像の「Status」の部分が「up」から「down」に変更され、migrateする前の状態に戻ります。これでマイグレーションファイルを再度編集できるようになります。

※厳密にはマイグレーションファイルは編集しようと思えばいつでも編集できますが、「up」状態のマイグレーションファイルを編集してしまうとエラーの原因になるので必ずrollbackしてから編集し、再度migrateしましょう。

「up」状態のマイグレーションファイルを削除してしまったら?

①削除されたファイルの代わりとなる仮のマイグレーションファイルを生成

rails db:migrate:statusを実行し、削除済みファイルの「Migration ID」を確認したうえで同じIDを持つマイグレーションファイルを作成。
ファイル名: 「(MigrationID).sample.rb」など

②以下のコマンドが実行できるようになるので、実行。

【コマンド】rails db:rollback

③以下のコマンドでマイグレーションの状態を確認。

【コマンド】rails db:migrate:status
①で仮作成したマイグレーションファイルの「Status」が「down」になっていることが確認できる。
この時点で、仮作成したファイルは削除してしまいましょう。

これでテーブルとマイグレーションの状態の整合が取れました!

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