W3cubDocs

/Ruby on Rails 7.0

class ActiveRecord::MigrationContext

Parent:
Object

MigrationContext sets the context in which a migration is run.

A migration context requires the path to the migrations is set in the migrations_paths parameter. Optionally a schema_migration class can be provided. For most applications, SchemaMigration is sufficient. Multiple database applications need a SchemaMigration per primary database.

Attributes

migrations_paths[R]
schema_migration[R]

Public Class Methods

new(migrations_paths, schema_migration = SchemaMigration) Show source
# File activerecord/lib/active_record/migration.rb, line 1070
def initialize(migrations_paths, schema_migration = SchemaMigration)
  @migrations_paths = migrations_paths
  @schema_migration = schema_migration
end

Public Instance Methods

migrate(target_version = nil, &block) Show source
# File activerecord/lib/active_record/migration.rb, line 1088
def migrate(target_version = nil, &block)
  case
  when target_version.nil?
    up(target_version, &block)
  when current_version == 0 && target_version == 0
    []
  when current_version > target_version
    down(target_version, &block)
  else
    up(target_version, &block)
  end
end

Runs the migrations in the migrations_path.

If target_version is nil, migrate will run up.

If the current_version and target_version are both 0 then an empty array will be returned and no migrations will be run.

If the current_version in the schema is greater than the target_version, then down will be run.

If none of the conditions are met, up will be run with the target_version.

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.