问题描述
|
在Rails中计算运行总计的最佳方法是-或实际上是任何方法?
我有一个模特,Sale。它具有数量列和sales_value列。当表按isbn_id,channel_id,invoice_date排序时,我需要用先前记录的数量值的总和填充第三列total_quantity。这会设置各种明智的数据库管理警报,因此我想知道是否有可能。
需要此累计金额的原因是对累计数量在特定范围内的销售额应用百分比。我无法在所有记录中都使用平均销售价值,因为销售利润率会随时间变化很大-因此,我将对可能超过或低于特许权使用费收款人的一揽子销售应用平均价格。
所以。我应该以某种方式在Sale模型上进行before_save回调,以及update_attribute吗?当表以特定方式排序时,是否有一种方法可以返回上一条记录的值?还是我应该将所有Sale记录转储到一个数组中,或者可以使用inject来累计运行总额?
任何想法最欢迎,在此先感谢。
更新:在此询问后续问题。
解决方法
请勿使用注入(缓慢)。最好的方法是在活动记录中使用SQL组命令和/或“计算”方法(例如sum)
http://ar.rubyonrails.org/classes/ActiveRecord/Calculations/ClassMethods.html