Konfiguracja za pomocą prostego przykładu: Mam 1 tabelę ( Totals
), która przechowuje sumę amount
kolumny każdego rekordu w drugiej tabeli ( Things
).
Kiedy a thing.amount
zostanie zaktualizowany, chciałbym po prostu dodać różnicę między starą wartością a nową wartością do total.sum
.
W tej chwili odejmuję w self.amount
trakcie before_update
i dodam w self.amount
trakcie after_update
. To zbytnie pokłada zaufanie w powodzeniu aktualizacji.
Ograniczenie: nie chcę po prostu ponownie obliczać sumy wszystkich transakcji.
Pytanie: Po prostu chciałbym uzyskać dostęp do oryginalnej wartości podczas after_update
wywołania zwrotnego. Jakie sposoby wymyśliłeś, aby to zrobić?
Aktualizacja: idę z pomysłem Luke'a Francla. Podczas after_update
oddzwonienia nadal masz dostęp do self.attr_was
wartości, które są dokładnie takie, jakie chciałem. Zdecydowałem się również na after_update
implementację, ponieważ chcę zachować tego rodzaju logikę w modelu. Dzięki temu bez względu na to, jak zdecyduję się aktualizować transakcje w przyszłości, będę wiedział, że poprawnie aktualizuję sumę transakcji. Dziękujemy wszystkim za sugestie dotyczące wdrożenia.