Теперь, когда направляющие добавили метку времени к миграциям, единственному номеру версии наверху /db/schema.rb
кажется бессмысленным. Иногда номер версии заканчивается неправильный при контакте с несколькими разработчиками или несколькими ответвлениями.
Делает направляющие, даже используют это :version
параметр еще?
И есть ли любой вред в нем являющийся неправильным (как в: это не отражает метку времени последний раз прикладной фиксации)?
Пример:
ActiveRecord::Schema.define(:version => 20100417022947) do
# schema definition ...
end
Я решил исследовать сам. Оказывается, что из-за миграций с меткой времени единственное, что Rails делает с этим номером, - это предположение, что миграция с этой конкретной меткой времени уже была применена и, таким образом, создает соответствующую запись в таблица schema_migration, если она не существует.
от: /lib/active_record/connection_adapters/abstract/schema_statements.rb
def assume_migrated_upto_version(version, migrations_path = ActiveRecord::Migrator.migrations_path)
# other code ...
unless migrated.include?(version)
execute "INSERT INTO #{sm_table} (version) VALUES ('#{version}')"
end
# ...