J'ai deux modèles générés par échafaudage: Book et Bookbag. Un Bookbag a beaucoup de livres et un livre appartient à un Bookbag. Chaque Livre a un poids, et chaque Bookbag a un poids moyen qui est censé stocker le poids moyen de tous ses Livres. Quelle est la meilleure façon de maintenir à jour le poids moyen? Utiliser un filtre de pré-enregistrement sur Bookbag ne fonctionne pas car il n'est pas appelé à chaque mise à jour d'un livre qu'il contient, et je ne veux pas mettre à jour le poids moyen à chaque mise à jour du livre, uniquement lorsque le poids d'un livre changements.Mettre à jour le parent Modèle sur la mise à jour de l'enfant
0
A
Répondre
0
Il y a une autre solution, si vous pouvez vous permettre de recalculer la moyenne au besoin.
class Bookbag < ActiveRecord::Base
has_many :books
def weight_average
self.books.average(:weight)
end
end
Vous n'avez pas besoin callbacks dans ce cas, et vous tirer parti de la capacité de votre base de données pour effectuer des calculs.
3
Une solution rapide pourrait être quelque chose le long de ces lignes:
class Book
def before_save
self.bookbag.update_avg if self.weight_changed?
end
end
Questions connexes
- 1. Mettre à jour le panneau de mise à jour
- 2. Mise à jour de la page parent ASP.NET avec JavaScript?
- 3. Mise à jour d'une base de données dorsale sur la mise à jour logicielle avec Java
- 4. Mettre à jour le modèle de données Entité commerciale
- 5. Mise à jour du matlab timer pour mettre à jour le GUIDE gui de matlab?
- 6. Mise à jour TreeView
- 7. jQuery - Si une base de données est mise à jour, mettre à jour la page
- 8. Mise à jour d'un panier sans passer par un bouton 'Mettre à jour le panier'
- 9. LINQ UpdateCheck sur le champ parent "LastUpdatedOn" lors de la mise à jour des enfants
- 10. Mise à jour Ligne
- 11. Actualiser le panneau de mise à jour
- 12. Mise à jour de Nulls
- 13. Parent enfant (Enregistrer, mettre à jour et supprimer)
- 14. Drupal: la mise à jour avec Drush ne change pas l'état de la mise à jour
- 15. Mise à jour de fichiers sur Apache
- 16. MySQL sur la mise à jour de la clé dupliquée
- 17. Comment mettre à jour mysql?
- 18. Le panneau de mise à jour des enfants appelle le prerender sur le panneau de mise à jour parent dans le scénario imbriqué
- 19. Mise à jour de la version
- 20. Mise à jour de div sur AJAX submit jQuery met à jour toutes les divs
- 21. veulent mettre à jour l'application sur l'air
- 22. mettre à jour la question étrange
- 23. mise à jour datagridview
- 24. mise à jour django ModelForm
- 25. de mise à jour à l'aide jquery
- 26. Question concernant la mise à jour d'un UITableViewCell sur l'iPhone
- 27. Trigger Properties mise à jour d'un objet parent dans WPF
- 28. mettre à jour un auto_now DateTimeField dans un modèle parent w/Django
- 29. IE ne pas mettre à jour l'affichage après le volet callpback met à jour le DOM
- 30. DHTML: Obtention de la taille d'élément mise à jour