# frozen_string_literal: true # SuperClass for models that are secured by chained footprints. class Footprintable < ApplicationRecord self.abstract_class = true def self.columns_out_of_footprint [] end def footprint_children [] end def sort_on_field 'id' end def check_footprint footprint_children.map(&:check_footprint).all? && footprint == compute_footprint end def chain_record self.footprint = compute_footprint save! FootprintDebug.create!( footprint: footprint, data: FootprintService.footprint_data(self.class, self), klass: self.class.name ) end def debug_footprint FootprintService.debug_footprint(self.class, self) end protected def compute_footprint FootprintService.compute_footprint(self.class, self) end end