rake db:migrate:redo

Rails3からだったかマイグレーションにchangeメソッドが追加された。
このchangeメソッドは、バージョンをあげる時はchangeの中を実行して、バージョンを下げる時は逆のことをしてくれる。かしこい。
でもこれは、データベースにカラム、状態、テーブルに追加する時だけにしか使えず、削除系の時には使えない。

def chande
  remove_column :recommandation_items, :type
end

このマイグレーション、バージョンをあげる時は削除するだけだけど、バージョンを下げる時は型を何でadd_columnしていいかわからないため、エラーが出る(はず)
これはcreate_tableでも言える。

ということから、削除系のマイグレーションは従来通りにupとdownを記述する必要があってとても緊張感がある。
この緊張感から少し解放してくれる便利なrakeタスクがこれ。

$ rake db:migrate:redo

これを実行するとひとつ前のバージョンから最新へ下げて上げてくれる。
dropしてcreateしてmigrateとやるのは精神的障壁が高い気がするのでこまめに確認できるととても楽だ。