1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-11-29 10:24:20 +01:00
fab-manager/app/models/history_value.rb

35 lines
825 B
Ruby

# frozen_string_literal: true
require 'checksum'
# Setting values, kept history of modifications
class HistoryValue < ActiveRecord::Base
belongs_to :setting
belongs_to :user
after_create :chain_record
def chain_record
self.footprint = compute_footprint
save!
end
def check_footprint
footprint == compute_footprint
end
private
def compute_footprint
max_date = created_at || Time.current
previous = HistoryValue.where('created_at < ?', max_date)
.order('created_at DESC')
.limit(1)
columns = HistoryValue.columns.map(&:name)
.delete_if { |c| %w[footprint updated_at].include? c }
Checksum.text("#{columns.map { |c| self[c] }.join}#{previous.first ? previous.first.footprint : ''}")
end
end