计算运行总轨数3

在Rails中计算运行总计的最佳方法 – 或者实际上是什么方式 – 是什么?

我有一个模特,Sale。 它有一个数量列和一个sales_value列。 当表按isbn_id排序,然后是channel_id,然后是invoice_date时,我需要填充第三列,total_quantity,以及先前记录的数量值的总和。 这设置了各种合理的数据库管理警报响铃,所以我想知道它是否可能。

需要此累积金额的原因是对累计数量在特定范围内的销售额应用百分比。 我不能在所有记录中使用平均销售价值,因为销售利润率会随着时间的推移而发生显着变化 – 因此我会将平均值应用于可能超过或低于特许权使用费收入者的一堆销售额。

所以。 我应该在Sale模型上执行before_save回调,并以某种方式执行update_attribute吗? 当表以特定方式排序时,是否有一种方法可以返回上一条记录的值? 或者我应该将所有Sale记录转储到一个数组中,并且可能使用inject来累积运行总计?

任何想法最受欢迎,提前感谢。

更新: 此处询问后续问题。

不要使用注射(srsly)。 执行此操作的最佳方法是在activerecord中使用SQL组命令和/或计算方法(如sum)

http://ar.rubyonrails.org/classes/ActiveRecord/Calculations/ClassMethods.html