跳到內容 跳到搜尋

遷移脈絡

MigrationContext 設定執行遷移的脈絡。

遷移脈絡需要在 migrations_paths 參數中設定遷移路徑。可以選擇性提供 schema_migration 類別。多個資料庫應用程式會針對每個資料庫實例化一個 SchemaMigration 物件。Rails 會在 Rake 任務中為你處理此事項。

方法
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