Rails3.1のMigrationでremove_columnメソッドの自動生成ができない
たいしたことではありませんが、Rails3.1でMigrationの記述方法が変わったからか、remove_columnメソッドの自動生成ができなくなっているようです。(本家サイトに別の方法があったりするのかもしれません。)
下のような書式でマイグレーションファイルを生成した場合、
rails g migration RemoveXxxFrom<Tablename>
Rails 3.0ではself.upメソッド内部にremove_columnメソッドを自動生成してくれますが、
# 3.0 class RemoveFooFromBars < ActiveRecord::Migration def self.up remove_column :bars, :foo end def self.down add_column :bars, :foo, :string end end
Rails 3.1は空のup/downメソッドが生成されてしまいます。
# 3.1 class RemoveFooFromBars < ActiveRecord::Migration def up end # 空のメソッド def down end # 空のメソッド end
rake db:migrateは空でも正常終了するので、VERBOSEオプションで表示していない場合は気づかないので注意です。
rake db:migrate VERVOSE=false #画面表示しない
3.0の頃から1度に2つ以上のカラムを削除したい場合に自動生成ができなかったですし、そもそもMigrationファイルは実行前に自分で確認しとこうという話ですね。