mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
migrate(:down) method with table_name_prefix
This commit is contained in:
parent
3f38d8442e
commit
c5ba4896ab
2 changed files with 34 additions and 6 deletions
|
@ -344,12 +344,24 @@ module ActiveRecord
|
|||
@name = self.class.name
|
||||
@version = nil
|
||||
@connection = nil
|
||||
@reverting = false
|
||||
end
|
||||
|
||||
# instantiate the delegate object after initialize is defined
|
||||
self.verbose = true
|
||||
self.delegate = new
|
||||
|
||||
def revert
|
||||
@reverting = true
|
||||
yield
|
||||
ensure
|
||||
@reverting = false
|
||||
end
|
||||
|
||||
def reverting?
|
||||
@reverting
|
||||
end
|
||||
|
||||
def up
|
||||
self.class.delegate = self
|
||||
return unless self.class.respond_to?(:up)
|
||||
|
@ -383,9 +395,11 @@ module ActiveRecord
|
|||
end
|
||||
@connection = conn
|
||||
time = Benchmark.measure {
|
||||
recorder.inverse.each do |cmd, args|
|
||||
send(cmd, *args)
|
||||
end
|
||||
self.revert {
|
||||
recorder.inverse.each do |cmd, args|
|
||||
send(cmd, *args)
|
||||
end
|
||||
}
|
||||
}
|
||||
else
|
||||
time = Benchmark.measure { change }
|
||||
|
@ -440,9 +454,11 @@ module ActiveRecord
|
|||
arg_list = arguments.map{ |a| a.inspect } * ', '
|
||||
|
||||
say_with_time "#{method}(#{arg_list})" do
|
||||
unless arguments.empty? || method == :execute
|
||||
arguments[0] = Migrator.proper_table_name(arguments.first)
|
||||
arguments[1] = Migrator.proper_table_name(arguments.second) if method == :rename_table
|
||||
unless reverting?
|
||||
unless arguments.empty? || method == :execute
|
||||
arguments[0] = Migrator.proper_table_name(arguments.first)
|
||||
arguments[1] = Migrator.proper_table_name(arguments.second) if method == :rename_table
|
||||
end
|
||||
end
|
||||
return super unless connection.respond_to?(method)
|
||||
connection.send(method, *arguments, &block)
|
||||
|
|
|
@ -88,5 +88,17 @@ module ActiveRecord
|
|||
LegacyMigration.down
|
||||
assert !ActiveRecord::Base.connection.table_exists?("horses"), "horses should not exist"
|
||||
end
|
||||
|
||||
def test_migrate_down_with_table_name_prefix
|
||||
ActiveRecord::Base.table_name_prefix = 'p_'
|
||||
ActiveRecord::Base.table_name_suffix = '_s'
|
||||
migration = InvertibleMigration.new
|
||||
migration.migrate(:up)
|
||||
assert_nothing_raised { migration.migrate(:down) }
|
||||
assert !ActiveRecord::Base.connection.table_exists?("p_horses_s"), "p_horses_s should not exist"
|
||||
ensure
|
||||
ActiveRecord::Base.table_name_prefix = ActiveRecord::Base.table_name_suffix = ''
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue