【初心者】NO FILEの削除方法


マイグレーションファイルを間違えて作り、慌てて手動で削除してしまいその後rails db:migrateするとエラーが出てしまいました。そのときに出てきたのがNO FILEです。

削除方法

①マイグレーションファイルの確認
$ rails db:migration:statusで現状の確認とマイグレーションファイルのIDを調べる。

$ rails db:migration:status

Status   Migration ID    Migration Name
--------------------------------------------------
   up     20200518132414  Devise create users
   up     20200521083405  Add name to users
   up     20200525013751  Create posts
   up     20200527010431  Add picture to posts
   up     20200528232616  ********** NO FILE **********
   up     20200531083300  Create comments

NO FILEとなっているIDは20200528232616と確認

②ダミーのファイル作成
あとでファイルは消してしまうのでhogeの部分はなんでも大丈夫です。

touch db/migrate/20200528232616_hoge.rb
20200528232616_hoge.rb
 class Hoge < ActiveRecord::Migrattion[5.3] #5.3の部分はrailsのバージョンに合わせてください
   def change
   end
 end

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

現状の確認

$ rails db:migrate:status

Status   Migration ID    Migration Name
--------------------------------------------------
   up     20200518132414  Devise create users
   up     20200521083405  Add name to users
   up     20200525013751  Create posts
   up     20200527010431  Add picture to posts
   up     20200528232616  Hoge 
   up     20200531083300  Create comments

現状はこのようにMigration Nameがちゃんとついている状態になっています。
ここからマイグレーションファイルをupからdownの状態にします。

$ rails db:migration:down VERSION=2020052823261
$ rails db:migrate:status

Status   Migration ID    Migration Name
--------------------------------------------------
   up     20200518132414  Devise create users
   up     20200521083405  Add name to users
   up     20200525013751  Create posts
   up     20200527010431  Add picture to posts
  down    20200528232616  Hoge 
   up     20200531083300  Create comments

downの状態になったことを確認したあと、削除します。

$ rm db/migrate/db/migrate/20200528232616_hoge.rb

再度確認してみると、

$ rails db:migrate:status

Status   Migration ID    Migration Name
--------------------------------------------------
   up     20200518132414  Devise create users
   up     20200521083405  Add name to users
   up     20200525013751  Create posts
   up     20200527010431  Add picture to posts
   up     20200531083300  Create comments

ちゃんと消えているはずです!!

まとめ

まずはマイグレーションファイルを間違えて作ってしまっても、慌ててupの状態で削除をしないことが大切です。