ロールバックとは?どんな時に使う?
テーブルのカラムを修正したいなどといった場合、ただマイグレーションファイルを編集して、rails db:migrateを実行しても反映されない。そのような時には、一度テーブルを差し戻してマイグレーションファイルを編集し、前述したコマンドを実行する必要がある。
テーブルを一つ前に差し戻すためには、rails db:rollbackを使う。
手順
rails db:migrate:statusでマイグレーションファイルの状態を確認。
$ rails db:migrate:status
Status Migration ID Migration Name
--------------------------------------------------
up 20210710045051 Create posts
up 20210712021213 Create comments
rails db:rollbackを実行する。
$ rails db:rollback
== 20210712021213 CreateComments: reverting ===================================
-- drop_table(:comments)
-> 0.0316s
== 20210712021213 CreateComments: reverted (0.0336s) ==========================
再度確認。
$ rails db:migrate:status
Status Migration ID Migration Name
--------------------------------------------------
up 20210710045051 Create posts
down 20210712021213 Create comments
↑マイグレーションファイルを直近の一つだけ差し戻した。
☆一つではなく、何個分か指定して差し戻したい → STEP=nを付け加える!
$ rails db:rollback STEP=2
== 20210710045051 CreatePosts: reverting ======================================
-- drop_table(:posts)
-> 0.0149s
== 20210710045051 CreatePosts: reverted (0.0168s) =============================
$ rails db:migrate:status
Status Migration ID Migration Name
--------------------------------------------------
down 20210710045051 Create posts
down 20210712021213 Create comments
↑二つ分差し戻せた!
このあとマイグレーションファイルを編集し、最後にrails db:migrateを実行して完了!