提交 d7b8f0c0 编写于 作者: A Aaron Patterson

Merge pull request #6874 from robbkidd/rename_sequences_too

Rename default sequence when table is renamed? [AR:postgres]
......@@ -1227,12 +1227,19 @@ def primary_key(table)
end
# Renames a table.
# Also renames a table's primary key sequence if the sequence name matches the
# Active Record default.
#
# Example:
# rename_table('octopuses', 'octopi')
def rename_table(name, new_name)
clear_cache!
execute "ALTER TABLE #{quote_table_name(name)} RENAME TO #{quote_table_name(new_name)}"
pk, seq = pk_and_sequence_for(new_name)
if seq == "#{name}_#{pk}_seq"
new_seq = "#{new_name}_#{pk}_seq"
execute "ALTER TABLE #{quote_table_name(seq)} RENAME TO #{quote_table_name(new_seq)}"
end
end
# Adds a new column to the named table.
......
......@@ -67,6 +67,19 @@ def test_rename_table_with_an_index
rename_table :octopi, :test_models
end
def test_rename_table_for_postgresql_should_also_rename_default_sequence
skip 'not supported' unless current_adapter?(:PostgreSQLAdapter)
rename_table :test_models, :octopi
con = ActiveRecord::Base.connection
pk, seq = con.pk_and_sequence_for('octopi')
assert_equal "octopi_#{pk}_seq", seq
rename_table :octopi, :test_models
end
end
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册