提交 76dc41ab 编写于 作者: L Lachlan Sylvester 提交者: Lachlan Sylvester

fix remove_index for postgresql when running legacy migrations

上级 0ff3e946
...@@ -41,8 +41,9 @@ def index_exists?(table_name, column_name, options = {}) ...@@ -41,8 +41,9 @@ def index_exists?(table_name, column_name, options = {})
end end
def remove_index(table_name, options = {}) def remove_index(table_name, options = {})
index_name = index_name_for_remove(table_name, options) options = { column: options } unless options.is_a?(Hash)
execute "DROP INDEX #{quote_column_name(index_name)} ON #{quote_table_name(table_name)}" options[:name] = index_name_for_remove(table_name, options)
super(table_name, options)
end end
private private
......
...@@ -21,6 +21,7 @@ def setup ...@@ -21,6 +21,7 @@ def setup
teardown do teardown do
connection.drop_table :testings rescue nil connection.drop_table :testings rescue nil
ActiveRecord::Migration.verbose = @verbose_was ActiveRecord::Migration.verbose = @verbose_was
ActiveRecord::SchemaMigration.delete_all
end end
def test_migration_doesnt_remove_named_index def test_migration_doesnt_remove_named_index
...@@ -37,6 +38,21 @@ def migrate(x) ...@@ -37,6 +38,21 @@ def migrate(x)
assert_raise(StandardError) { ActiveRecord::Migrator.new(:up, [migration]).migrate } assert_raise(StandardError) { ActiveRecord::Migrator.new(:up, [migration]).migrate }
assert connection.index_exists?(:testings, :foo, name: "custom_index_name") assert connection.index_exists?(:testings, :foo, name: "custom_index_name")
end end
def test_migration_does_remove_unnamed_index
connection.add_index :testings, :bar
migration = Class.new(ActiveRecord::Migration[4.2]) {
def version; 101 end
def migrate(x)
remove_index :testings, :bar
end
}.new
assert connection.index_exists?(:testings, :bar)
ActiveRecord::Migrator.new(:up, [migration]).migrate
assert_not connection.index_exists?(:testings, :bar)
end
end end
end end
end end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册