diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2019-02-11 23:41:01 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2019-02-11 23:46:07 +0900 |
commit | 93c21828367bf6255e79020fad882b597bace782 (patch) | |
tree | ccc73ce76b43929df0998c07b284a097545378d6 /activerecord | |
parent | b46601b56d94a02d944ed9bd9494aeea9cba98c8 (diff) | |
download | rails-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.rb | 11 | ||||
-rw-r--r-- | activerecord/test/cases/migration/foreign_key_test.rb | 11 |
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 |