J'écris une application Ruby on Rails et je souhaite qu'une méthode soit appelée à chaque modification de la base de données. Est-il possible de le faire sans insérer un appel de méthode dans chaque emplacement où la base de données est modifiée?Comment appeler une méthode à chaque modification de la base de données
Répondre
J'aime la réponse de KandadaBooggu mais si vous ne voulez pas le singe avec AR vous pourriez être en mesure de le faire avec un observateur.
class AllObserver < ActiveRecord::Observer
observe :model_a, :model_b
def after_save(record)
logger.info("CREATED #{record.class}")
end
def after_update(record)
logger.info("UPDATED #{record.class}")
end
end
Ajoutez simplement les modèles que vous voulez observer. Dans cet exemple, il consignera les mises à jour de ModelA et ModelB
Dépend de la base de données. De nombreuses bases de données ont des langages de procédure stockée très puissants qui peuvent, entre autres, appeler des services Web.
Vous pouvez avoir un déclencheur sur les tables de base de données importantes appelez un service Web Ruby qui appelle votre méthode.
Vous pouvez également avoir des déclencheurs qui mettent à jour une table d'événements, puis disposer d'un processus qui surveille les modifications sur cette table et déclenche ensuite la méthode.
Il y a probablement de la magie de méta-programmation que vous pourriez utiliser pour modifier votre code ruby pour invoquer le changement.
Toutes sortes d'options.
Avez-vous pensé à utiliser: after_update ou before_update ActiveRecord:
http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html
Si vous voulez vous connecter tous les modèles:
le patch singe ActiveRecord :: classe de base.
class ActiveRecord::Base
after_save :log_something
after_destroy :log_something
private
def log_something
end
end
Pour un modèle spécifique:
class User < ActiveRecord::Base
after_save :log_something
after_destroy :log_something
private
def log_something
end
end
- 1. Comment appeler la méthode de classe de base?
- 2. rails: modification de la base de données
- 3. Une modification de la base de données peut-elle déclencher un appel de méthode dans Rails?
- 4. Recalculer l'attribut à chaque modification d'un autre attribut dans les données de base MO
- 5. Modification de DBML, comment changer la base de données SQL?
- 6. Comment appeler une méthode de contrôleur à partir de JQuery?
- 7. Java: Pourquoi la méthode de classe de base peut-elle appeler une méthode inexistante?
- 8. Comment appeler une méthode depuis ApplicationController avant chaque appel de méthode?
- 9. Comment appeler une image aléatoire à partir de la base de données MySql en utilisant JavaScript
- 10. Comment appeler une méthode de service Web?
- 11. "rake spec" migre la base de données à chaque fois
- 12. Modification de la base de données sous SQLObject
- 13. Comment définir la date de modification à chaque modification de NSManagedObject?
- 14. Conserver efficacement des enregistrements de chaque modification de certaines relations de base de données
- 15. Appeler méthode de classe de base de la méthode surchargée dans la sous-classe
- 16. Modification de la base de données de connexion ASP.NET
- 17. monorail - comment appeler la méthode de jQuery
- 18. Comment appeler une méthode IronPython 2 à partir de C#
- 19. Comment appeler une méthode IBAction à partir d'une autre méthode
- 20. Base de données Modification ou recommencer?
- 21. Modification de fichiers Word stockés dans une base de données
- 22. Comment appeler l'implémentation de base d'une méthode virtuelle substituée?
- 23. Comment appeler une méthode dans la méthode init?
- 24. Comment appeler une méthode Rails à l'aide de JavaScript
- 25. appeler une méthode à une heure spécifiée
- 26. comment appeler la méthode de propriétaire?
- 27. Wordpress (base de données); Afficher la dernière date de modification?
- 28. Entity Framework: comment mettre à jour la base de données lors de la modification Modèle
- 29. Comment appeler Application_Start() à partir de la méthode TestInitialize?
- 30. Quand dois-je appeler une méthode proche d'une base de données SQLite dans Android
+1 à l'aide d'un déclencheur. Exactement ce que le db est pour. –