PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

impossible de supprimer l'objet en raison d'une contrainte de clé étrangère

Vous devez d'abord supprimer l'identité qui fait référence à l'utilisateur. Ensuite, vous pouvez supprimer l'utilisateur. Par défaut, la clé étrangère fait un restrict vous ne pouvez donc pas supprimer l'utilisateur si quelque chose y fait référence.

si vous souhaitez utiliser Rails pour gérer la destruction de l'identité, vous pouvez le faire

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

  ......

 end 

Ce qui amènerait Rails à détruire tous les enregistrements dépendants.

Mais comme vous utilisez des clés étrangères, vous pouvez ajuster votre migration pour définir des suppressions en cascade

 add_foreign_key :identities, :users, on_delete: :cascade

En supposant que les rails 4.2 ont un support natif