Method: ActiveRecord::ConnectionAdapters::SchemaStatements#remove_foreign_key
- Defined in:
- activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
#remove_foreign_key(from_table, to_table = nil, **options) ⇒ Object
Removes the given foreign key from the table. Any option parameters provided will be used to re-add the foreign key in case of a migration rollback. It is recommended that you provide any options used when creating the foreign key so that the migration can be reverted properly.
Removes the foreign key on accounts.branch_id.
remove_foreign_key :accounts, :branches
Removes the foreign key on accounts.owner_id.
remove_foreign_key :accounts, column: :owner_id
Removes the foreign key on accounts.owner_id.
remove_foreign_key :accounts, to_table: :owners
Removes the foreign key named special_fk_name on the accounts table.
remove_foreign_key :accounts, name: :special_fk_name
Checks if the foreign key exists before trying to remove it. Will silently ignore indexes that don’t exist.
remove_foreign_key :accounts, :branches, if_exists: true
The options hash accepts the same keys as SchemaStatements#add_foreign_key with an addition of
:to_table-
The name of the table that contains the referenced primary key.
1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 |
# File 'activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb', line 1214 def remove_foreign_key(from_table, to_table = nil, **) return unless use_foreign_keys? return if .delete(:if_exists) == true && !foreign_key_exists?(from_table, to_table) fk_name_to_delete = foreign_key_for!(from_table, to_table: to_table, **).name at = create_alter_table from_table at.drop_foreign_key fk_name_to_delete execute schema_creation.accept(at) end |