Rails マイグレーションスクリプトを書き直した時は
よくマイグレーションスクリプトを書き間違えて、アレ?間違えた!ってことがけっこうあります。
そんなときは、以下の2つの対応方法があると思います。
この時の対処方法をど忘れすることがあるので、メモとして残します。
自分の場合、コミット前、リリース前なら2.で対応することが多いです。
理由は単にマイグレーションスクリプトを増やしたくないこと、仕様を変更ならログとして残すのは良いと思いますが、単に間違えただけなら修正したほうが後から見た時に間違えたんだな、とわかりやすいんじゃないかなと。
$bin/rake db:reset
ではなく、
$bin/rake db:migrate:reset
を使う必要があります。
何故かと言うと、bin/rake db:reset
はschema.rb
を元にデータベースを作り直すからです。
用途としては、db:seed
で作成したデータ以外のデータを削除したい時に使うものです。
よって、マイグレーションスクリプトを修正しても反映されません。(見てないもんね)
bin/rake db:migrate:reset
の場合、マイグレーションスクリプトを読み込んで再マイグレーションする、という動作になります。
この際、shcema.rb
も書き換えられます。
コレでマイグレーションスクリプトの修正も反映されるようになります。
まとめ
bin/rake db:reset
データベースのデータをリセットbin/rake db:migrate:reset
データベースを再マイグレーション