1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-12-15 00:24:09 +01:00
fab-manager/app/models/footprintable.rb
2023-06-19 21:01:01 +02:00

46 lines
918 B
Ruby

# 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
return false unless persisted?
reload
footprint_children.map(&:check_footprint).all? && chained_element && !chained_element.corrupted?
end
# @return [ChainedElement]
def chain_record
ChainedElement.create!(
element: self,
previous: previous_record&.chained_element
)
end
# @return [Footprintable,NilClass]
def previous_record
self.class.where("#{sort_on_field} < ?", self[sort_on_field])
.order("#{sort_on_field} DESC")
.limit(1)
.first
end
def debug_footprint
FootprintService.debug_footprint(self.class, self)
end
end