Vérifiez si l’enregistrement a été détruit dans les rails

il y a donc

record.new_record? 

Pour vérifier si quelque chose est nouveau

Je dois vérifier si quelque chose est sur le sharepoint sortir.

 record = some_magic record.destroy record.is_destroyed? # => true 

Quelque chose comme ca. Je sais que détruire détruit l’object, si gelé? sorte de travaux, mais y a-t-il quelque chose explicitement pour cette tâche?

Tu peux le faire.

 Record.exists?(record) 

Cependant, cela fera un succès sur la firebase database, ce qui n’est pas vraiment nécessaire. La seule autre solution que je connaisse est de faire un rappel tel que mentionné par le VIV.

 attr_accessor :destroyed after_destroy :mark_as_destroyed def mark_as_destroyed self.destroyed = true end 

Et puis vérifiez record.destroyed .

Fais-le:

 record.destroyed? 

Les détails sont ici ActiveRecord :: Persistence

Cela arrive très bientôt. Dans le dernier article de Riding Rails , on peut lire ceci:

Et finalement, ce n’est pas nécessairement lié à BugMash, mais José Valim – parmi des dizaines d’autres commits – a ajouté model.destroyed?. Cette méthode astucieuse ne retournera true que si l’instance que vous consultez actuellement a été détruite avec succès.

Alors voilà. Arrive bientôt!

Alors que record.destroyed? fonctionne correctement, et renvoie true ou false, vous pouvez également le sécher un peu et créer la condition if sur la ligne que vous appelez détruire dans votre contrôleur.

 record = Object.find(params[:id]) if record.destroy ... happy path else ... sad path end 

Réalisez que cet article est un peu en retard dans le jeu. Mais si quelqu’un veut en discuter davantage, je suis un jeu! Note complémentaire: J’ai aussi eu une validation after_destroy sur mon modèle et pendant que cela fonctionnait, une méthode séparée pour quelque chose comme ça semble exagérée;)

destroy un object ne renvoie rien d’autre qu’un appel à freeze (pour autant que je sache), donc je pense qu’il est frozen? est votre meilleur pari. Votre autre option est de sauver ActiveRecord::RecordNotFound si vous avez fait quelque chose comme record.reload .

Je pense que la tactique de Mike ci-dessus pourrait être la meilleure, ou vous pourriez écrire un wrapper pour ces cas mentionnés si vous voulez commencer à «faire des hypothèses».

À votre santé.

Sans en savoir plus sur la logique de votre application, je pense que ça gelé? est votre meilleur pari.

À défaut, vous pouvez certainement append un atsortingbut “détruit” à vos modèles que vous déclenchez dans les rappels et que vous pouvez vérifier si vous souhaitez une solution plus précise.