书面记录未写入联接表软删除的销毁事件

Paper trail not writing destroy events for join table soft deletes

提问人:lck 提问时间:3/10/2023 更新时间:3/10/2023 访问量:109

问:

我在我的应用程序中使用纸质跟踪部分来显示更改的审核日志,并注意到当联接表中的项目被软删除时,它不会跟踪销毁事件(它适用于其他表)。我有一个模型,看起来像这样:

module Book
  class BookGenre < ApplicationRecord
    acts_as_paranoid
    has_paper_trail

    belongs_to :book, inverse_of: :book_genres
    belongs_to :genre

    validates :book, presence: true
    validates :genre, presence: true
  end
end

# == Schema Information
#
# Table name: book_genres
#
#  id            :bigint           not null, primary key
#  deleted_at    :datetime
#  created_at    :datetime         not null
#  updated_at    :datetime         not null
#  genre_id      :integer          not null
#  book_id       :integer          not null
#

对此表的更改是通过“book”控制器中的 update 方法进行的。当从书籍中删除“流派”时,纸质记录不会在表格中写入任何内容,因此无法正确跟踪这些事件。versions

对于如下所示的模型,它会在通过相同的“book”控制器方法进行更新时按预期跟踪创建和销毁事件:

module Book
  class Cover < ApplicationRecord
    acts_as_paranoid
    has_paper_trail

    belongs_to :book

    validates :book, presence: true
    validates :cover_link, presence: true
  end
end

# == Schema Information
#
# Table name: book_genres
#
#  id            :bigint           not null, primary key
#  deleted_at    :datetime
#  created_at    :datetime         not null
#  updated_at    :datetime         not null
#  book_id       :integer          not null
#  cover_link    :string           not null 
#

我的预感是,这与“book_genres”是一个联接表这一事实有关。关于如何让它以我想要的方式工作的任何想法?

我试过:

  • 明确告知书面记录以跟踪销毁操作,而不是依赖默认值has_paper_trail :on => [:update, :create, :destroy]
  • 安装和设置 paper_trail-association_tracking Gem
  • 将纸质记录升级到最新版本
  • 通读了纸质记录文档,但没有找到我要找的东西(尽管也许我错过了)
Ruby-on-Rails Rails -模型 Paper-Trail-gem

评论

0赞 000723-weict 3/10/2023
@Ick 这可能会对你有所帮助 - stackoverflow.com/a/31835611/17731528
0赞 lck 3/13/2023
我以前看过,没有帮助,但谢谢!

答: 暂无答案