遷移脈絡
MigrationContext
設定執行遷移的脈絡。
遷移脈絡需要在 migrations_paths
參數中設定遷移路徑。可以選擇性提供 schema_migration
類別。多個資料庫應用程式會針對每個資料庫實例化一個 SchemaMigration
物件。Rails 會在 Rake 任務中為你處理此事項。
方法
屬性
[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_version
是 nil
,migrate
會執行 up
。
如果 current_version
和 target_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