【问题标题】:Delete all versions of paper_trail when delting a model删除模型时删除所有版本的 paper_trail
【发布时间】:2015-04-07 21:46:09
【问题描述】:

我正在将 paper_trail gem 用于博客系统来存储文章的版本。但是,我不需要在文章被销毁后保留它的任何版本。

如何在模型实例被销毁时删除它的所有版本?我只在文档中看到了一种全局删除版本的方法。

有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 paper-trail-gem


    【解决方案1】:
    before_destroy do
      self.versions.destroy_all
    end
    

    默认情况下has_paper_trail 创建has_many :versions 关联。所以你可以很容易地摧毁它们。但请确保在您的模型中有这个:

     has_paper_trail on: [:create, :update]  #because you dont want to keep record for destroy event.
    

    【讨论】:

    • 你为什么用 self.versions.collect(&:destroy) 而不是 self.versions.destroy_all ?
    • 根据你的建议改了:)
    • 哦,好吧!我实际上不知道是否有区别。
    • 我猜你可以改用delete_all,因为我怀疑你是否希望运行回调或验证
    • 您不想使用 after_destroy 以防销毁失败,您不会过早删除数据吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    • 2020-02-07
    • 2018-12-26
    • 1970-01-01
    相关资源
    最近更新 更多