Les Rails de, la Suppression d'Enfants sans Supprimer Parent à l'aide de :has_many
J'ai
class MyContainer < ActiveRecord::Base
:has_many MyObjects, :dependent => :destroy
end
Je veux supprimer tous les MyObjects
dans le conteneur sans avoir à supprimer la MyContainer
. Mon modèle n'ont :dependent => :destroy
, mais je ne veux pas avoir à supprimer et recréer l'objet, car il est plus lent.
Quelque chose comme cela ne fonctionne pas:
@obj = MyContainer.find_by_id(10)
@obj.my_objects.delete_all
Comment puis-je y arriver?
OriginalL'auteur Dex | 2010-04-20
Vous devez vous connecter pour publier un commentaire.
delete_all
est unActiveRecord::Base
méthode de classe.Vous devez utiliser
destroy_all
. Quelque chose comme:À l'aide de
delete_all
correctement serait plus rapide si vous n'avez pas besoin pour la recherche de votreMyContainer
premier (ou les utiliser pour d'autres choses)EDIT: pour rails 3
OriginalL'auteur maček
L'un ou les deux de ces travaux:
Les deux avec instancier chaque objet en mémoire.
OriginalL'auteur Robert Speicher
Vous pouvez supprimer des objets directement comme suit
OriginalL'auteur Salil