提交 0968ee34 编写于 作者: V Vasiliy Ermolovich 提交者: Aaron Patterson

add prefix and suffix to renamed tables, closes #1510

上级 7eb596cd
......@@ -443,6 +443,7 @@ def method_missing(method, *arguments, &block)
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)
......
......@@ -6,6 +6,8 @@
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 @@ class BigNumber < ActiveRecord::Base; end
class Reminder < ActiveRecord::Base; end
class Thing < ActiveRecord::Base; end
class ActiveRecord::Migration
class << self
attr_accessor :message_count
......@@ -57,6 +61,11 @@ def teardown
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 @@ def test_proper_table_name
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_'
......
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
\ No newline at end of file
class RenameThings < ActiveRecord::Migration
def self.up
rename_table "things", "awesome_things"
end
def self.down
rename_table "awesome_things", "things"
end
end
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册