1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

add prefix and suffix to renamed tables, closes #1510

This commit is contained in:
Vasiliy Ermolovich 2011-11-26 17:23:20 +03:00 committed by Aaron Patterson
parent 7eb596cddd
commit 0968ee3456
4 changed files with 52 additions and 0 deletions

View file

@ -443,6 +443,7 @@ module ActiveRecord
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
end
return super unless connection.respond_to?(method)
connection.send(method, *arguments, &block)

View file

@ -6,6 +6,8 @@ require 'models/topic'
require 'models/developer'
require MIGRATIONS_ROOT + "/valid/2_we_need_reminders"
require MIGRATIONS_ROOT + "/rename/1_we_need_things"
require MIGRATIONS_ROOT + "/rename/2_rename_things"
require MIGRATIONS_ROOT + "/decimal/1_give_me_big_numbers"
if ActiveRecord::Base.connection.supports_migrations?
@ -13,6 +15,8 @@ if ActiveRecord::Base.connection.supports_migrations?
class Reminder < ActiveRecord::Base; end
class Thing < ActiveRecord::Base; end
class ActiveRecord::Migration
class << self
attr_accessor :message_count
@ -57,6 +61,11 @@ if ActiveRecord::Base.connection.supports_migrations?
ActiveRecord::Base.connection.initialize_schema_migrations_table
ActiveRecord::Base.connection.execute "DELETE FROM #{ActiveRecord::Migrator.schema_migrations_table_name}"
%w(things awesome_things prefix_things_suffix prefix_awesome_things_suffix).each do |table|
Thing.connection.drop_table(table) rescue nil
end
Thing.reset_column_information
%w(reminders people_reminders prefix_reminders_suffix).each do |table|
Reminder.connection.drop_table(table) rescue nil
end
@ -1534,6 +1543,28 @@ if ActiveRecord::Base.connection.supports_migrations?
Reminder.reset_table_name
end
def test_rename_table_with_prefix_and_suffix
assert !Thing.table_exists?
ActiveRecord::Base.table_name_prefix = 'prefix_'
ActiveRecord::Base.table_name_suffix = '_suffix'
Thing.reset_table_name
Thing.reset_sequence_name
WeNeedThings.up
assert Thing.create("content" => "hello world")
assert_equal "hello world", Thing.find(:first).content
RenameThings.up
Thing.set_table_name("prefix_awesome_things_suffix")
assert_equal "hello world", Thing.find(:first).content
ensure
ActiveRecord::Base.table_name_prefix = ''
ActiveRecord::Base.table_name_suffix = ''
Thing.reset_table_name
Thing.reset_sequence_name
end
def test_add_drop_table_with_prefix_and_suffix
assert !Reminder.table_exists?
ActiveRecord::Base.table_name_prefix = 'prefix_'

View file

@ -0,0 +1,11 @@
class WeNeedThings < ActiveRecord::Migration
def self.up
create_table("things") do |t|
t.column :content, :text
end
end
def self.down
drop_table "things"
end
end

View file

@ -0,0 +1,9 @@
class RenameThings < ActiveRecord::Migration
def self.up
rename_table "things", "awesome_things"
end
def self.down
rename_table "awesome_things", "things"
end
end