【初心者】マイグレーションファイルを修正したい -ロールバックの使い方-


私は勉強し始めた最初の頃、自分で何かを作ろうとして間違えたらすぐに消していました。
特にやらかしてしまうのはmigration周り…
そんないつも消してしまっている方にぜひ使ってもらいたいのがrollbackです。

rollback(ロールバック)とは

巻き戻し
コミットする前までの処理を1つづつ戻すことができること

使い方

あ、間違えてしまったと思った時は、
まずは現状を見ます。

$ rails db:migrate:status
 Status   Migration ID    Migration Name
--------------------------------------------------
   up      日付       Devise create users
   up      日付       Add name to users
   up      日付       Create posts

upの状態だとマイグレーションファイルを編集しても読み込めれません。
そこで、

$ rails db:rollback
$ rails db:migrate:status
 Status   Migration ID    Migration Name
--------------------------------------------------
   up      日付       Devise create users
   up      日付       Add name to users
  down      日付       Create posts

状態をdownにすることで編集することができます。
同時に複数のマイグレーションファイルをrollbackさせたい時は

$ rails db:rollback STEP=2
$ rails db:migrate:status
 Status   Migration ID    Migration Name
--------------------------------------------------
  down      日付        Devise create users
  down      日付       Add name to users
  down      日付       Create posts

このようになります。
downの状態にした後に修正をし、再度rails db:migrateコマンドを実行します。

ちなみに最初からやり直したい時は

$ rails db:rollback VERSION=0

まとめ

初めは、間違えたら消した方が早いと思うのですが、これを覚えるだけでかなり気持ちが楽になります。