PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Das Objekt kann aufgrund einer Fremdschlüsseleinschränkung nicht gelöscht werden

Sie müssten zuerst die Identität entfernen, die auf den Benutzer verweist. Dann können Sie den Benutzer löschen. Standardmäßig führt der Fremdschlüssel eine restrict durch Sie können den Benutzer also nicht löschen, wenn irgendetwas darauf verweist.

Wenn Sie Rails verwenden möchten, um die Zerstörung der Identität zu handhaben, können Sie dies tun

class User < ActiveRecord::Base
  has_many :identities,  dependent: :destroy 

  ......

 end 

Was dazu führen würde, dass Rails alle abhängigen Datensätze zerstört.

Da Sie jedoch Fremdschlüssel verwenden, können Sie Ihre Migration anpassen, um Kaskadenlöschungen festzulegen

 add_foreign_key :identities, :users, on_delete: :cascade

Angenommen Rails 4.2 mit nativer Unterstützung