aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2019-02-11 23:41:01 +0900
committerRyuta Kamizono <kamipo@gmail.com>2019-02-11 23:46:07 +0900
commit93c21828367bf6255e79020fad882b597bace782 (patch)
treeccc73ce76b43929df0998c07b284a097545378d6 /activerecord
parentb46601b56d94a02d944ed9bd9494aeea9cba98c8 (diff)
downloadrails-93c21828367bf6255e79020fad882b597bace782.tar.gz
rails-93c21828367bf6255e79020fad882b597bace782.tar.bz2
rails-93c21828367bf6255e79020fad882b597bace782.zip
Add `remove_foreign_key` for `change_table`
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb11
-rw-r--r--activerecord/test/cases/migration/foreign_key_test.rb11
2 files changed, 22 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb b/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
index ec241fdbe9..a27751fd70 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
@@ -519,6 +519,7 @@ module ActiveRecord
# t.json
# t.virtual
# t.remove
+ # t.remove_foreign_key
# t.remove_references
# t.remove_belongs_to
# t.remove_index
@@ -692,6 +693,16 @@ module ActiveRecord
@base.add_foreign_key(name, *args)
end
+ # Removes the given foreign key from the table.
+ #
+ # t.remove_foreign_key(:authors)
+ # t.remove_foreign_key(column: :author_id)
+ #
+ # See {connection.remove_foreign_key}[rdoc-ref:SchemaStatements#remove_foreign_key]
+ def remove_foreign_key(*args)
+ @base.remove_foreign_key(name, *args)
+ end
+
# Checks to see if a foreign key exists.
#
# t.foreign_key(:authors) unless t.foreign_key_exists?(:authors)
diff --git a/activerecord/test/cases/migration/foreign_key_test.rb b/activerecord/test/cases/migration/foreign_key_test.rb
index 6810c6c4ee..32586e525b 100644
--- a/activerecord/test/cases/migration/foreign_key_test.rb
+++ b/activerecord/test/cases/migration/foreign_key_test.rb
@@ -128,6 +128,17 @@ if ActiveRecord::Base.connection.supports_foreign_keys?
assert_empty @connection.foreign_keys(Astronaut.table_name)
end
+
+ def test_remove_foreign_key_by_column_in_change_table
+ rocket = Rocket.create!(name: "myrocket")
+ rocket.astronauts << Astronaut.create!
+
+ @connection.change_table Astronaut.table_name do |t|
+ t.remove_foreign_key column: :rocket_id
+ end
+
+ assert_empty @connection.foreign_keys(Astronaut.table_name)
+ end
end
class ForeignKeyChangeColumnTest < ActiveRecord::TestCase