计算运行总轨数3

时间:2011-05-25 17:20:50

标签: ruby-on-rails arrays ruby-on-rails-3 callback inject

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

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

需要此累计金额的原因是对累计数量在特定范围内的销售额应用百分比。我无法在所有记录中使用平均销售额,因为销售利润率会随着时间的推移而发生巨大差异 - 因此我会将平均值应用于可能超过或低于特许权使用费收款人的一堆销售额。

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

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

更新:后续问题here

1 个答案:

答案 0 :(得分:1)

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

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