instance method revert

Ruby on Rails 7.2.3

Since v3.2.22.5

Available in: v3.2.22.5 v4.0.13 v4.1.16 v4.2.9 v5.2.8.1 v6.0.6 v6.1.7.10 v7.0.10 v7.1.6 v7.2.3 v8.0.4 v8.1.2

Signature

revert(*migration_classes, &block)

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[7.2]
  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 "20121212123456_tenderlove_migration"

class FixupTLMigration < ActiveRecord::Migration[7.2]
  def change
    revert TenderloveMigration

    create_table(:apples) do |t|
      t.string :variety
    end
  end
end

This command can be nested.

Parameters

migration_classes rest
block block
Source
# File activerecord/lib/active_record/migration.rb, line 855
    def revert(*migration_classes, &block)
      run(*migration_classes.reverse, revert: true) unless migration_classes.empty?
      if block_given?
        if connection.respond_to? :revert
          connection.revert(&block)
        else
          recorder = command_recorder
          @connection = recorder
          suppress_messages do
            connection.revert(&block)
          end
          @connection = recorder.delegate
          recorder.replay(self)
        end
      end
    end

Defined in activerecord/lib/active_record/migration.rb line 855 · View on GitHub · Improve this page · Find usages on GitHub

Defined in ActiveRecord::Migration

Type at least 2 characters to search.

↑↓ navigate · open · esc close