Supprimer tout dans la console des rails
j'ai une association pour un utilisateur comme user has_many agents
et agent belongs_to user
.
dans la console rails,je essaie d'utiliser différents utilisateurs de tester un scénario particulier et je veux un utilisateur avec aucun des agents,donc je veux supprimer le user.agents
.
j'ai essayé user.agents.map(&:destroy)
,mais il donne une erreur comme ActiveRecord::StaleObjectError: Attempted to delete a stale object
.j'ai même essayé de user.agents.delete_all
, mais il ne fonctionne pas.puis-je supprimer les utilisateurs des agents avec une seule commande dans console rails.
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Vous feriez mieux d'utiliser
destroy
parce qu'il passe par tous les Rails de la magie (rappels)Vous êtes à la recherche d'un
.destroy_all
méthode. Il détruit tous les enregistrements d'une collection donnée.Donc
user.agents.destroy_all
, se retourner un tableau vide pouruser.agents
.Vous ne pourriez pas avoir utilisé
.delete_all
parce que c'est une méthode de la classe et il supprime les enregistrements qui correspondent à une condition donnée. Comme ça,Agent.delete_all(condition)
. Si elle est utilisée sans condition, il supprime tous les enregistrements d'un correspondant de la table.Gardez à l'esprit que
.destroy
méthodes sont des méthodes d'instance. Ils instancier un objet et d'effectuer des rappels avant de l'effacer..delete
méthodes sont des méthodes de classe et ils ont directement effacer un objet.Cela fonctionne pour moi
Est pour Le verrouillage optimistesupprimer tous les verrous que vous avez sur elle avant d'essayer de supprimer à nouveau. Vérifier si quelqu'un d'autre est d'utiliser le système ou de soumettre tous les formulaires que vous avez ouvert.