migrationファイル --NO FILE-- を解決する

 RailsでDBに変更を加える際に、マイグレーションファイルを作ってカラムの追加なりをする。

 しかし、マイグレーションファイルの作成とか編集に失敗したからと言って、手動でファイルを削除すればそれが反映されるわけではない。きちんとターミナルでコマンドによるRemoveを行わないと、あとから rake db:migrate するときにエラーが起きたり、本番環境へデプロイするときにエラーが起きたりする。

 とはいえ人は過ちを犯すもの。なぜかあるべきマイグレーションファイルがない時もある。そういう時の対処法。

 

●方法

 消失したマイグレーションファイルの代わりを作る

            ↓

 そのファイルをROLLBACKでdownにして削除する

 

 詳しくはこのサイトを見て手順通りに実行しました。

 https://joppot.info/2014/10/16/2104

 

 しかし一点だけハマりました。

 代わりに作ったマイグレーションファイル内の記述を

class Tmp < ActiveRecord::Migration
  def change
  end
end
 とするのですが、これだけだと rake db:rollback ができない。
 
 解決方法は
class Tmp < ActiveRecord::Migration(5.2)
  def change
  end
end
 上記のようにクラス名の後にRailsのバージョンを記載する。
 
 これできちんとROLLBACKができて、削除もできるようになります。一件落着。