程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在 Paper Trail gem 的版本模型上添加 counter_cache 列大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决在 Paper Trail gem 的版本模型上添加 counter_cache 列?

开发过程中遇到在 Paper Trail gem 的版本模型上添加 counter_cache 列的问题如何解决?下面主要结合日常开发的经验,给出你关于在 Paper Trail gem 的版本模型上添加 counter_cache 列的解决方法建议,希望对你解决在 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_Trail/version_concern.rb:18 中。

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

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

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

大佬总结

以上是大佬教程为你收集整理的在 Paper Trail gem 的版本模型上添加 counter_cache 列全部内容,希望文章能够帮你解决在 Paper Trail gem 的版本模型上添加 counter_cache 列所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:gem