rails sums model

时间:2013-03-24 11:19:14

标签: ruby-on-rails ruby-on-rails-3 model

我的应用程序中有很多sum函数。我将所有数据总和移动到一个单独的模型...让我们称之为...总和。这样可以更快地调用这些数字,因为每次我需要总计很多行时,我都不会修复数据库。

我想要做的是每次创建或更新某些其他模型时更新sum行(许多属性)。我正在尝试使用类方法通过每个模型,但由于某种原因它不起作用。

我想知道在哪里我可以创建一个通用方法,可以从after_create回调中调用我选择的任何模型。总和与帐户相关联,该帐户不是正在更新的模型。其他帐户关联的模型将会达到总和模型。因此,我可能需要将self.account_id传递给回调方法。

与Papertrails版本模型一样,每次保存另一个模型时都会更新。

1 个答案:

答案 0 :(得分:1)

看一下Statistics gem。

它有一个缓存选项,它使用Rails缓存来防止对数据库的重复聚合调用。

我更喜欢这样的东西,而不是每次更新属性时都有更新。如果您不打算将sums模型保留在内存中,那么您必须触发与sums表一样多的更新,因为有实际更新。

虽然可能没有写入时间开销,而不是读取时间,但统计数据还带有其他优化选项。