所以,我有一个Folder和FolderItem模型。

更新 通用标签

我正在使用counter_cache来保留单个文件夹的序号数量。但是一个文件夹可能是另一个文件夹的父文件夹,我希望父文件夹的所有子文件夹的counter_cache加上自己的counter_cache的总和。

为此,我尝试放置一个after_update方法来缓存在counter_cache列中所做的更改,但是以某种方式在创建新的FolderItem时不会调用此方法。

有帮助吗?

解决方案

我会做这样的事情。

向文件夹表添加一些缓存计数器字段 通用标签

还有Ruby代码 通用标签

请注意,Folder#sum_of_children方法是递归的,因此对于大型数据集,它可能会减慢您的应用程序的速度。您可能想对它做更多的SQL魔术操作,但是就我所能得到的纯Ruby而言,这是一个非常好的解决方案。我看到您以相反的方式进行了操作,这与您需要自下而上进行更新的速度一样慢。(这是自上而下的)

不知道这是您要找的内容,但这是一种用于缓存文件夹中项目数的可读解决方案。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top