mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
add convenience methods for checking migrations
if a rails project needs to be migrated ActiveRecord::Migrator.needs_migration? will be true or false if the current version matches the last version.
This commit is contained in:
parent
0460949070
commit
e5b39862cb
2 changed files with 23 additions and 0 deletions
|
@ -605,6 +605,14 @@ module ActiveRecord
|
|||
end
|
||||
end
|
||||
|
||||
def needs_migration?
|
||||
current_version != last_version
|
||||
end
|
||||
|
||||
def last_version
|
||||
migrations(migrations_paths).last.try(:version)||0
|
||||
end
|
||||
|
||||
def proper_table_name(name)
|
||||
# Use the Active Record objects own table_name, or pre/suffix from ActiveRecord::Base if name is a symbol/string
|
||||
name.table_name rescue "#{ActiveRecord::Base.table_name_prefix}#{name}#{ActiveRecord::Base.table_name_suffix}"
|
||||
|
|
|
@ -56,6 +56,21 @@ class MigrationTest < ActiveRecord::TestCase
|
|||
Person.reset_column_information
|
||||
end
|
||||
|
||||
def test_migrator_versions
|
||||
migrations_path = MIGRATIONS_ROOT + "/valid"
|
||||
ActiveRecord::Migrator.migrations_paths = migrations_path
|
||||
|
||||
ActiveRecord::Migrator.up(migrations_path)
|
||||
assert_equal 3, ActiveRecord::Migrator.current_version
|
||||
assert_equal 3, ActiveRecord::Migrator.last_version
|
||||
assert_equal false, ActiveRecord::Migrator.needs_migration?
|
||||
|
||||
ActiveRecord::Migrator.down(MIGRATIONS_ROOT + "/valid")
|
||||
assert_equal 0, ActiveRecord::Migrator.current_version
|
||||
assert_equal 3, ActiveRecord::Migrator.last_version
|
||||
assert_equal true, ActiveRecord::Migrator.needs_migration?
|
||||
end
|
||||
|
||||
def test_create_table_with_force_true_does_not_drop_nonexisting_table
|
||||
if Person.connection.table_exists?(:testings2)
|
||||
Person.connection.drop_table :testings2
|
||||
|
|
Loading…
Reference in a new issue