Spec-Zone.ru › Ruby on Rails 8.0

класс 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 1214
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 1233
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