aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/migration/references_foreign_key_test.rb
diff options
context:
space:
mode:
authorYves Senn <yves.senn@gmail.com>2015-02-11 11:09:29 +0100
committerYves Senn <yves.senn@gmail.com>2015-02-11 11:20:59 +0100
commita893718c3165aa6ef6b2b500f7922954ba21eb02 (patch)
treecbc8692b54f5b6f72040000bfd6bf78d16b5bf9a /activerecord/test/cases/migration/references_foreign_key_test.rb
parent9bdb083dba0778f47866fa440476b3141716de52 (diff)
downloadrails-a893718c3165aa6ef6b2b500f7922954ba21eb02.tar.gz
rails-a893718c3165aa6ef6b2b500f7922954ba21eb02.tar.bz2
rails-a893718c3165aa6ef6b2b500f7922954ba21eb02.zip
fix `remove_reference` with `foreign_key: true` on MySQL. #18664.
MySQL rejects to remove an index which is used in a foreign key constraint: ``` ActiveRecord::StatementInvalid: Mysql2::Error: Cannot drop index 'index_copies_on_title_id': needed in a foreign key constraint: ALTER TABLE `copies` DROP `title_id` ``` Removing the constraint before removing the column (and the index) solves this problem.
Diffstat (limited to 'activerecord/test/cases/migration/references_foreign_key_test.rb')
-rw-r--r--activerecord/test/cases/migration/references_foreign_key_test.rb10
1 files changed, 10 insertions, 0 deletions
diff --git a/activerecord/test/cases/migration/references_foreign_key_test.rb b/activerecord/test/cases/migration/references_foreign_key_test.rb
index 99de7db70c..cf1328e4d0 100644
--- a/activerecord/test/cases/migration/references_foreign_key_test.rb
+++ b/activerecord/test/cases/migration/references_foreign_key_test.rb
@@ -95,6 +95,16 @@ module ActiveRecord
end
end
end
+
+ test "foreign key column can be removed" do
+ @connection.create_table :testings do |t|
+ t.references :testing_parent, index: true, foreign_key: true
+ end
+
+ assert_difference "@connection.foreign_keys('testings').size", -1 do
+ @connection.remove_reference :testings, :testing_parent, foreign_key: true
+ end
+ end
end
end
end