I'm working with Rails and PostgreSQL and have a basic one-to-many relationship going on, one Auction
has many Bid
s. However when I try and delete an auction (that has bids present) I get the following error:
ERROR: update or delete on table "auctions" violates foreign key constraint "fk_rails_43e9021cbf" on table "bids". DETAIL: Key(id)=(1) is still referenced from table "bids".
Deleting auctions with no bids gives no error.
The part that confuses me is that inside my Auction
model, I have:
has_many :bids, dependent: :destroy
Since I have a dependent destroy clause, why am I still getting this error?
EDIT: I've tried dropping the whole DB, then recreating/re-migrating everything - still get the same error.
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