我的应用程序中有很多sum函数。我将所有数据总和移动到一个单独的模型...让我们称之为...总和。这样可以更快地调用这些数字,因为每次我需要总计很多行时,我都不会修复数据库。
我想要做的是每次创建或更新某些其他模型时更新sum行(许多属性)。我正在尝试使用类方法通过每个模型,但由于某种原因它不起作用。
我想知道在哪里我可以创建一个通用方法,可以从after_create回调中调用我选择的任何模型。总和与帐户相关联,该帐户不是正在更新的模型。其他帐户关联的模型将会达到总和模型。因此,我可能需要将self.account_id传递给回调方法。
与Papertrails版本模型一样,每次保存另一个模型时都会更新。
答案 0 :(得分:1)
看一下Statistics gem。
它有一个缓存选项,它使用Rails缓存来防止对数据库的重复聚合调用。
我更喜欢这样的东西,而不是每次更新属性时都有更新。如果您不打算将sums
模型保留在内存中,那么您必须触发与sums
表一样多的更新,因为有实际更新。
虽然可能没有写入时间开销,而不是读取时间,但统计数据还带有其他优化选项。