Railsでrollback(ロールバック)する方法とは?

ロールバックとは?どんな時に使う?

テーブルのカラムを修正したいなどといった場合、ただマイグレーションファイルを編集して、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を実行して完了!

タイトルとURLをコピーしました