ERROR: delete on table violates foreign key constraint. Key id is still referenced from table (many)
From Rails v4.2 you can do this:
Create a migration to update the foreign keys
20160321165946_update_foreign_key.rb
class UpdateForeignKey < ActiveRecord::Migration
def change
# remove the old foreign_key
remove_foreign_key :posts, :users
# add the new foreign_key
add_foreign_key :posts, :users, on_delete: :cascade
end
end
Are you using delete
or destroy
to remove the objects? I think you are using delete
and you want to use destroy
See http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#module-ActiveRecord::Associations::ClassMethods-label-Delete+or+destroy-3F
My issue was that i am using @auction.delete
(visible in the screenshot I posted) when trying to remove a record.
Delete will ignore any callbacks I have in place. So even though I have a dependent destroy clause, it is not being called - hence Rails is throwing an error. If/When I changed the code to read @auction.destroy
, the call-back got invoked and it solved the problem.
Reference: Difference between Destroy and Delete