Method: ActiveRecord::Migration#revert
- Defined in:
- lib/active_record/migration.rb
#revert(*migration_classes) ⇒ Object
Reverses the migration commands for the given block and the given migrations.
The following migration will remove the table ‘horses’ and create the table ‘apples’ on the way up, and the reverse on the way down.
class FixTLMigration < ActiveRecord::Migration
def change
revert do
create_table(:horses) do |t|
t.text :content
t.datetime :remind_at
end
end
create_table(:apples) do |t|
t.string :variety
end
end
end
Or equivalently, if TenderloveMigration is defined as in the documentation for Migration:
require_relative '2012121212_tenderlove_migration'
class FixupTLMigration < ActiveRecord::Migration
def change
revert TenderloveMigration
create_table(:apples) do |t|
t.string :variety
end
end
end
This command can be nested.
453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 |
# File 'lib/active_record/migration.rb', line 453 def revert(*migration_classes) run(*migration_classes.reverse, revert: true) unless migration_classes.empty? if block_given? if @connection.respond_to? :revert @connection.revert { yield } else recorder = CommandRecorder.new(@connection) @connection = recorder do @connection.revert { yield } end @connection = recorder.delegate recorder.commands.each do |cmd, args, block| send(cmd, *args, &block) end end end end |