Skip to content

Commit

Permalink
add prefix and suffix to renamed tables, closes rails#1510
Browse files Browse the repository at this point in the history
  • Loading branch information
nashby committed Nov 26, 2011
1 parent b6916e0 commit 5677f32
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 0 deletions.
1 change: 1 addition & 0 deletions activerecord/lib/active_record/migration.rb
Expand Up @@ -443,6 +443,7 @@ def method_missing(method, *arguments, &block)
say_with_time "#{method}(#{arg_list})" do say_with_time "#{method}(#{arg_list})" do
unless arguments.empty? || method == :execute unless arguments.empty? || method == :execute
arguments[0] = Migrator.proper_table_name(arguments.first) 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) return super unless connection.respond_to?(method)
connection.send(method, *arguments, &block) connection.send(method, *arguments, &block)
Expand Down
31 changes: 31 additions & 0 deletions activerecord/test/cases/migration_test.rb
Expand Up @@ -6,13 +6,17 @@
require 'models/developer' require 'models/developer'


require MIGRATIONS_ROOT + "/valid/2_we_need_reminders" 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" require MIGRATIONS_ROOT + "/decimal/1_give_me_big_numbers"


if ActiveRecord::Base.connection.supports_migrations? if ActiveRecord::Base.connection.supports_migrations?
class BigNumber < ActiveRecord::Base; end class BigNumber < ActiveRecord::Base; end


class Reminder < ActiveRecord::Base; end class Reminder < ActiveRecord::Base; end


class Thing < ActiveRecord::Base; end

class ActiveRecord::Migration class ActiveRecord::Migration
class << self class << self
attr_accessor :message_count attr_accessor :message_count
Expand Down Expand Up @@ -57,6 +61,11 @@ def teardown
ActiveRecord::Base.connection.initialize_schema_migrations_table ActiveRecord::Base.connection.initialize_schema_migrations_table
ActiveRecord::Base.connection.execute "DELETE FROM #{ActiveRecord::Migrator.schema_migrations_table_name}" 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| %w(reminders people_reminders prefix_reminders_suffix).each do |table|
Reminder.connection.drop_table(table) rescue nil Reminder.connection.drop_table(table) rescue nil
end end
Expand Down Expand Up @@ -1534,6 +1543,28 @@ def test_proper_table_name
Reminder.reset_table_name Reminder.reset_table_name
end 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 def test_add_drop_table_with_prefix_and_suffix
assert !Reminder.table_exists? assert !Reminder.table_exists?
ActiveRecord::Base.table_name_prefix = 'prefix_' ActiveRecord::Base.table_name_prefix = 'prefix_'
Expand Down
11 changes: 11 additions & 0 deletions activerecord/test/migrations/rename/1_we_need_things.rb
@@ -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
9 changes: 9 additions & 0 deletions activerecord/test/migrations/rename/2_rename_things.rb
@@ -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

0 comments on commit 5677f32

Please sign in to comment.