0

我的应用程序中有很多求和函数。我将所有数据总和移动到一个单独的模型......让我们称之为......总和。这将使调用这些数字更快,因为每次我需要对许多行求和时,我都不会确定数据库。

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

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

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

4

1 回答 1

1

看看统计宝石。

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

我更喜欢这样的东西,而不是每次更新属性时都进行更新。如果您不打算将sums模型保存在内存中,那么您将不得不对sums表进行与实际更新一样多的更新。

虽然与读取时间相比,写入时间开销可能是可以的,但 Statistics 带有其他优化选项。

于 2013-03-24T11:26:47.273 回答