dépendante => détruire sur un “has_many par” association
Apparemment dépendante => détruire est ignoré lorsque vous utilisez également l' :par le biais de l'option.
J'ai donc ce...
class Comment < ActiveRecord::Base
has_many :comment_users, :dependent => :destroy
has_many :users, :through => :comment_users
...
end
...mais la suppression d'un Commentaire n'a pas pour conséquence l'associé comment_user enregistrements de se supprimer.
Quelle est l'approche recommandée, puis, pour les suppressions en cascade lors de l'utilisation :par?
Grâce
Vous devez vous connecter pour publier un commentaire.
Apparemment :dépendante n'est pas ignoré!
Le vrai problème est que j'ai été appeler
Comment.delete(id)
qui va droit à la db, alors que j'utilise maintenantComment.destroy(id)
qui charge le Commentaire de l'objet et des appels destroy() sur celui-ci. Ce ramasse le:dependent => :destroy
et tout est bien.dependent: :destroy
. Le problème était que j'utilisaisobj.delete
au lieu deobj.destroy
si les personnes à charge n'étaient pas supprimés, ainsi que l'intégrité de l'erreur.L'affiche originale de la solution est valide, mais je tenais à préciser que cela ne fonctionne que si vous avez une colonne id de la table. Je préfère mon plusieurs-à-plusieurs tables à seulement deux clés étrangères, mais j'ai dû enlever mon "id: false," de la migration à la définition de la table pour la suppression en cascade de travail. Avoir cette fonctionnalité certainement l'emporte pas avoir une colonne id de la table.
Si vous avez un polymorphe de l'association, vous devez faire ce que @blogofsongs dit, mais avec un foreign_key attribut de la sorte: