self.processed_transactions_count += count
self.save
end[/code]
Ja uważam, że metoda powinna tak wyglądać, kumpel, że save nie powinien mieć tu miejsca, co dla mnie sprawia, ze odpowiedzialność za save’owanie jest rozbita po aplikacji, oraz operacja na modelu powinna także dotykać bazy danych. A jak wy uważacie?
Nie widzę przeciwskazań czemu akurat nie wywoływać save w metoda (jeśli nie masz zmiennej lokalnej save to wystarczy sam save bez self.). update_attributes przerz też wywołuje save.
Oczywiście, że to jest właściwe, przy czym dobrą praktyką jest użycie ! na końcu metody, która zapisuje rekord. Akurat w Tym przypadku można też rozważyć zastosowanie increment / increment! (uwaga na wspomniane gotcha) - http://apidock.com/rails/ActiveRecord/Persistence/increment!
Teraz wyobraźcie sobie, że metod takich jak ta jest w modelu 10. W czasie 1 requestu 10 razy idzie save do bazy danych, a można by to zrobić raz. Nie przeszkadzałoby wam to? (nie twierdzę, że to jest złe, po prostu dziwi mnie takie bezkrytyczne podejście, że to jest właściwe i nie ma żadnych przeciwskazań)
Imho wszystko zależy od aplikacji i od tego jakie są praktyki w danym projekcie. Ja szczerze mówiąc wolę wersję bez save, z powodów, które wymienił @Arnvald, ale często robię obie wersje. Najczęściej foo i foo!, ale można też foo() i foo(:save).