Вы запрашиваете альтернативную реализацию? Или для чего-то еще? Вы можете сделать то же самое с Enumerable::inject
, например:
class Vote < ActiveRecord::Base
has_many :options
def calculate_total
total = self.options.inject(0) { |sum, vote| sum += vote.quantity }
save!
end
end
Таким образом, общая сумма голосов вычисляется и сохраняется каждый раз, когда вызывается calculate_total
.