【问题标题】:Adding a counter_cache column on the version model for the Paper Trail gem在 Paper Trail gem 的版本模型上添加 counter_cache 列
【发布时间】:2021-03-15 15:49:01
【问题描述】:

我有一个配置了 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

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

【问题讨论】:

    标签: paper-trail-gem


    【解决方案1】:

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

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

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

    如果您想为文档贡献您的解决方案,我很乐意查看 PR。我建议在“5.b.配置版本关联”部分附近的某个地方。

    【讨论】:

    • 谢谢,杰瑞德!那让人放心。我将使用上面的示例创建一个 PR。
    猜你喜欢
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    相关资源
    最近更新 更多