rails ではマイグレーションコードを gitで保管して、DBの変更履歴を残していたり するのですが、 たまーーに migrationコードを実行せずにSQLで直接 DBを変更する輩がいます。
そんな時に
rails db:migrate
としようものなら、 「そんなカラムはalreadyで存在するぜ」 とか 「そんなカラムないけどちゃんと確認して」 と怒られることがあります。
いらないマイグレーションコードだとわかっていれば すぐにファイルを削除してしまえばいいのですが、 そうもできない時があります。
そんな時に、実際は実行してないけど スキップする方法を探していたのですが。。。 ありました方法は簡単です。
スキップしたいバージョン番号のレコード をschema_migrationテーブルに追加する
です。
これで、migrateがupの状態になり、 次から実行されることはありません。
railsのマイグレーションはどうやら、 schema_migrationというテーブルで migrationの実行有無( rake db:migrate:statusで見れるやつ ) を管理しているようですね。
バージョン番号というのは rails gすると勝手に先頭に付加される数字です
例 ) 20170310XXXXXX_create_user.rb
また逆も然りで、 再度migrationコードを実行したい場合は 対象のレコードを削除してあげます。
試してみてください!!