dependent => détruire sur une association “has_many through”

Apparemment dépendant => détruire est ignoré lorsque vous utilisez également l’option: through.

Donc j’ai ça …

class Comment  :destroy has_many :users, :through => :comment_users ... end 

… mais la suppression d’un commentaire n’entraîne pas la suppression des enregistrements comment_user associés.

Quelle est l’approche recommandée pour les suppressions en cascade lorsque vous utilisez: through?

Merci

Apparemment: la dépendance n’est pas ignorée!

Le vrai problème était que Comment.delete(id) qui va directement à la firebase database, alors que j’utilise maintenant Comment.destroy(id) qui charge l’object Comment et appelle destroy (). Cela ramasse le :dependent => :destroy et tout va bien.

La solution de l’affiche originale est valide, mais je voulais souligner que cela ne fonctionne que si vous avez une colonne d’identifiant pour cette table. Je préfère que mes tables plusieurs-à-plusieurs ne soient que les deux clés étrangères, mais j’ai dû supprimer mon “id: false” de la définition de la table de migration pour que la suppression en cascade fonctionne. Cette fonctionnalité l’emporte certainement sur l’absence d’une colonne d’identification sur la table.

Si vous avez une association polymorphe, vous devriez faire ce que @blogofsongs a dit mais avec un atsortingbut foreign_key comme ceci:

 class User < ActiveRecord::Base has_many :activities , dependent: :destroy, foreign_key: :trackable_id end