在Paper Trail gem的版本模型上添加counter_cache列



我有一个配置了PT的Page模型。我还有一个Versions::PageVersion模型,因为页面版本存储在一个单独的表(page_versions(中。Page模型有一个计数器缓存列,称为page_versions_count。到目前为止,一切都很标准。

为了使计数器缓存工作,我覆盖了版本模型上的belongs_to :item关联,如下所示:

class Versions::PageVersion < PaperTrail::Version
belongs_to :item,
polymorphic: true,
counter_cache: true
end

这确实有效,但我现在想知道这是否是正确的方法

PT不提供配置belongs_to :item关联的方法。关联选项在paper_track/version_cern.rb:18中进行硬编码。

AR支持像您所做的那样重新定义关联的AFAICT。新选项(包括counter_cache(将替换(而不是合并(旧选项。我已经用ActiveRecord::Reflection实验证实了这一点,但找不到官方文件承认这一点。

所以,你的解决方案是我能想到的最好的。

如果你想为文档贡献你的解决方案,我很乐意查看PR;5.b.配置版本关联";。

最新更新