とりあえずコード書けよ

技術的なことの備忘録。

db:migrate:status から ********** NO FILE ********** を消す

f:id:ys3128:20190525101428j:plain

何番煎じかわからんけども、備忘録。

開発中とかによくやっちゃうわけですよ。
migrateかけた後に「やっぱ違う」と思ってrollbackなどをせずにmigrationファイルを消す。
ってことを。

で、そうするとdb:migrate:statusを実行した際にこいつがあらわれます。

# bundle rake db:migrate:status
 up     20190523053718  ********** NO FILE **********

そうするとschema.rbにもversionの履歴にカウントされてしまうので、schema.rbさんが使い物にならなくなります。
というわけで、何かと鬱陶しいので消します。

①まず下記のようにファイルを作成します。

# (version)_tmp.rb
touch 20190523053718_tmp.rb

②①で作成したファイルに下記の内容を追加

class Tmp < ActiveRecord::Migration[5.2]
  def change
  end
end

railsのversionによってActiveRecord::Migration[x.x]の内容が違います。

③db:migrate:downを実行

bundle exec rake db:migrate:down VERSION=20190523053718

④作成したファイルを削除

rm 20190523053718_tmp.rb

これで
f:id:ys3128:20190525101428j:plain

マイグレーションファイル消す前にちゃんとstatus確認しましょう。