change dùng cho các operations tự reversible — Rails biết cách đảo ngược:
ruby
def change
add_column :users, :age, :integer # down: remove_column
add_index :users, :email # down: remove_index
create_table :posts do |t| ... end # down: drop_table
endMột số operations không reversible → phải viết up/down rõ ràng:
ruby
def up
execute "UPDATE users SET role = 'member' WHERE role IS NULL"
end
def down
raise ActiveRecord::IrreversibleMigration,
"Cannot reverse a data-only migration"
endOperations không reversible: remove_column (mất data type), change_column, execute raw SQL data.