LoginSignup
1
0

More than 1 year has passed since last update.

【Rails】特定のマイグレーションファイルをロールバックして削除する方法

Posted at

複数のマイグレーションファイルが存在していて、特定のファイルのみを指定して、ロールバック→削除する方法。
不要なマイグレーションファイルを作成してしまった際に、どうやって削除するだったっけ?と毎度忘れてしまうので、備忘録として書いておきます。

環境

Rails 6.0.6.1
ruby 2.6.5
mysql  Ver 14.14 Distrib 5.7.40, for osx10.18 (x86_64) using  EditLine wrapper

①マイグレーションファイルの状態を確認

先ずはマイグレーションの状態を確認するために下記コマンドを実行。

% rails db:migrate:status

今回削除したいマイグレーションファイルは20230212080029 Create user prefecturesで、statusはupの状態。

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20230204081040  Devise create users
   up     20230205061907  Create destinations
   up     20230212080029  Create user prefectures
   up     20230214022600  Create histories
   up     20230214045454  Create user histories

②削除したいマイグレーションファイルを指定してロールバック

マイグレーションファイルを削除するためには、statusをdownにする必要がある為、下記コマンドを実行。

% rails db:migrate:down VERSION=20230212080029

コマンド実行後、無事に削除したいファイルのみをdownすることに成功。

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20230204081040  Devise create users
   up     20230205061907  Create destinations
  down    20230212080029  Create user prefectures
   up     20230214022600  Create histories
   up     20230214045454  Create user histories

③downしたマイグレーションファイルを削除

downしたマイグレーションファイル名を下記コマンドで指定し、実行することでファイルを削除。

 % rm db/migrate/20230212080029_create_user_prefectures.rb 

マイグレーションファイルを削除した後に、念の為rails db:migrate statusコマンドを実行。
問題なくデータを削除できていることを確認し、削除作業完了。

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20230204081040  Devise create users
   up     20230205061907  Create destinations
   up     20230214022600  Create histories
   up     20230214045454  Create user histories
1
0
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
0