J'ai quelques modèles qui ont des rappels after_save. En général, cela ne pose pas de problème, mais dans certaines situations, comme lors de la création de données de développement, je souhaite enregistrer les modèles sans que les rappels soient exécutés. Existe-t-il un moyen simple de le faire ? Quelque chose de semblable à...
Person#save( :run_callbacks => false )
o
Person#save_without_callbacks
J'ai regardé dans la documentation de Rails et je n'ai rien trouvé. Cependant, d'après mon expérience, la documentation de Rails ne dit pas toujours tout.
UPDATE
J'ai trouvé un article de blog qui explique comment supprimer les callbacks d'un modèle comme celui-ci :
Foo.after_save.clear
Je n'ai pas pu trouver où cette méthode est documentée mais elle semble fonctionner.
8 votes
Si vous faites quelque chose de destructif ou de coûteux (comme l'envoi d'emails) dans un callback, je recommande de le déplacer et de le déclencher séparément du contrôleur ou ailleurs. De cette façon, vous ne pourrez pas le déclencher "accidentellement" lors du développement, etc.
2 votes
La solution que vous avez acceptée ne fonctionne pas pour moi. J'utilise rails 3. J'obtiens une erreur comme celle-ci : -- méthode indéfinie `update_without_callbacks' for #<User:0x10ae9b848>.
0 votes
Yaa cet article de blog a travaillé....
1 votes
Question connexe : stackoverflow.com/questions/19449019/
0 votes
N'est-ce pas ?
Foo.after_save.clear
supprimer les callbacks pour l'ensemble du modèle ? Et ensuite, comment proposez-vous de les restaurer ?