Avoid using change_table in migration

Ever tried to rollback a migration from a legacy project only to find the following error popup?

==  AddGlobalNotificationSupport: reverting ===================================
rake aborted!
An error has occurred, this and all later migrations canceled:

ActiveRecord::IrreversibleMigration/usr/local/rvm/gems/ruby-2.0.0-p0/gems/activerecord-3.2.13/lib/active_record/migration/command_recorder.
rb:42:in `block in inverse'

Thats right. ActiveRecord says its an IrreversibleMigration.

Why?

Turns out using change_table as part of your migration is not a good idea. If you’re using something like that, you should consider changing into a more manual approach like add_column, remove_column.

Reference: Stackoverflow