跳至内容 跳至搜索

迁移上下文

MigrationContext 设置迁移运行的上下文。

迁移上下文需要在 migrations_paths 参数中设置迁移路径。可选地,可以提供 schema_migration 类。多个数据库应用程序将为每个数据库实例化一个 SchemaMigration 对象。从 Rake 任务中,Rails 将为您处理此操作。

方法
M
N

属性

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

类公共方法

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)

运行 migrations_path 中的迁移。

如果 target_versionnilmigrate 将运行 up

如果 current_versiontarget_version 都为 0,则将返回一个空数组,并且不会运行任何迁移。

如果架构中的 current_version 大于 target_version,则将运行 down

如果未满足任何条件,则将使用 target_version 运行 up

# 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