2009-06-22 19 views
0

Ich habe zwei Gerüst-generierte Modelle: Book und Bookbag. Ein Bookbag hat - viele Bücher und ein Buch gehört - zu einem Bookbag. Jedes Buch hat ein Gewicht und jedes Bookbag hat ein durchschnittliches Gewicht, das das durchschnittliche Gewicht aller seiner Bücher speichern soll. Was ist der beste Weg, um das Durchschnittsgewicht auf dem neuesten Stand zu halten?Update Eltern Modell auf Kind Update

Die Verwendung eines Vorsicherungsfilters auf Bookbag funktioniert nicht, weil es nicht bei jeder Aktualisierung eines Buches aufgerufen wird, das es enthält, und ich möchte das Durchschnittsgewicht nicht bei jedem Buchupdate aktualisieren, nur wenn das Gewicht eines Buches Änderungen.

Antwort

0

Es gibt eine andere Lösung, wenn Sie sich leisten können, den Mittelwert neu berechnet werden je nach Bedarf.

Sie benötigen in diesem Fall keine Callbacks, und Sie nutzen die Fähigkeit Ihrer Datenbank, Berechnungen durchzuführen.

3

Eine schnelle Lösung könnte etwas in dieser Richtung sein:

class Book 
    def before_save 
    self.bookbag.update_avg if self.weight_changed? 
    end 
end