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 = command_recorder
          @connection = recorder
          suppress_messages do
            connection.revert { yield }
          end
          @connection = recorder.delegate
          recorder.replay(self)
        end
      end
    end
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 = command_recorder
          @connection = recorder
          suppress_messages do
            connection.revert { yield }
          end
          @connection = recorder.delegate
          recorder.replay(self)
        end
      end
    end
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[5.0]
     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[5.0]
     def change
       revert TenderloveMigration

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

 This command can be nested.