Paper Trail: create a version on parent whenever associated model changes?

后端 未结 1 1931
情歌与酒
情歌与酒 2021-01-03 02:02

I\'m working on a Rails app where I need to show the audit trail on a Record, which has_many Data. I have paper_trail on my Record, and ass

相关标签:
1条回答
  • 2021-01-03 02:42

    This works for me.

    class Place < ActiveRecord::Base
      has_paper_trail
      before_update :check_update
    
      def check_update
        return if changed_notably?
    
        tracking_has_many_associations = [ ... ]
        tracking_has_has_one_associations = [ ... ]
    
        tracking_has_many_associations.each do |a|
          send(a).each do |r|
            if r.send(:changed_notably?) || r.marked_for_destruction?
              self.touch
              return
            end
          end
        end
        tracking_has_one_associations.each do |a|
          r = send(a)
          if r.send(:changed_notably?) || r.marked_for_destruction?
            self.touch
            return
          end
        end
      end
    end
    
    0 讨论(0)
提交回复
热议问题