I\'m trying to do a simple user.destroy
but running into the following error:
ERROR: update or delete on table \"users\" violates foreig
An easy solution is to simply cascade-delete the records in the associated table, which can be done through active record, like so:
user.rb
class User < ActiveRecord::Base
has_many :identities, dependent: :destroy
# rest of user class
end
Check out the documentation pertaining to has_many for more info.
You would need to remove the Identity that references the user first. Then you can delete the user.. By default the foreign key is doing a restrict
so you cannot delete the user if anything references to it.
if you would like use Rails to handle destroying the identity you can do
class User < ActiveRecord::Base
has_many :identities, dependent: :destroy
......
end
Which would cause Rails to destroy all the dependent records.
But as you are using Foreign keys, you can adjust your migration to set cascade deletes
add_foreign_key :identities, :users, on_delete: :cascade
Assuming rails 4.2 which has native support