Spec-Zone.ru › Ruby on Rails 8.1

class ActiveRecord::MigrationContext

Родительский класс:
Object

Контекст миграции

MigrationContext задаёт контекст, в котором выполняется миграция.

Для контекста миграции необходимо указать путь к миграциям в параметре migrations_paths. При необходимости можно указать класс schema_migration. Приложения с несколькими базами данных создают объект SchemaMigration для каждой базы данных. В задачах Rake Rails сделает это за вас.

Атрибуты

internal_metadata [R]
migrations_paths [R]
schema_migration [R]

Открытые методы класса

new (migrations_paths, schema_migration = nil, internal_metadata = nil) Показать исходный код
# File activerecord/lib/active_record/migration.rb, line 1223
def initialize(migrations_paths, schema_migration = nil, internal_metadata = nil)
  @migrations_paths = migrations_paths
  @schema_migration = schema_migration || SchemaMigration.new(connection_pool)
  @internal_metadata = internal_metadata || InternalMetadata.new(connection_pool)
end

Открытые методы экземпляра

migrate (target_version = nil, &block) Показать исходный код
# File activerecord/lib/active_record/migration.rb, line 1242
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

Выполняет миграции в migrations_path.

Если target_version равно nil, migrate выполнит up.

Если и current_version, и target_version равны 0, будет возвращён пустой массив, и миграции выполняться не будут.

Если current_version в схеме больше, чем target_version, будет выполнен down.

Если ни одно из условий не выполнено, up будет выполнен с target_version.

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API