Question

Apparemment dépendante => détruire est ignoré lors également l'utilisation du:. Par l'option

J'ai donc ça ...

class Comment < ActiveRecord::Base
  has_many :comment_users, :dependent => :destroy
  has_many :users, :through => :comment_users
  ...
end

... mais la suppression d'un commentaire ne se traduit pas dans les enregistrements comment_user associés se supprimer.

Quelle est l'approche recommandée, puis, pour la cascade supprime lors de l'utilisation: par

?

Merci

Était-ce utile?

La solution

Il semble: est dépendant pas éludés

La vraie question est que je l'appelais Comment.delete(id) qui va droit à la DB, alors que je l'utilise maintenant Comment.destroy(id) qui charge l'objet Commentaire et appelle à détruire () sur elle. Cela prend le :dependent => :destroy et tout va bien.

Autres conseils

La solution affiche originale est valide, mais je voulais souligner que cela ne fonctionne que si vous avez une colonne id pour cette table. Je préfère mes nombreux à plusieurs tables seulement être les deux clés étrangères, mais je devais enlever mon « id: false » de la définition de la table de migration pour suppression en cascade au travail. Ayant cette fonctionnalité l'emporte certainement ne pas avoir une colonne id sur la table.

Si vous avez une association polymorphique, vous devez faire ce que @blogofsongs dit, mais avec un attribut foreign_key comme ceci:

class User < ActiveRecord::Base
  has_many :activities , dependent: :destroy, foreign_key: :trackable_id
end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top