Module: Philiprehberger::AuditTrail::Differ

Defined in:
lib/philiprehberger/audit_trail/differ.rb

Overview

Hash diff utility that computes field-level changes between two hashes.

Class Method Summary collapse

Class Method Details

.call(before:, after:) ⇒ Hash

Compute the diff between two hashes.

Parameters:

  • before (Hash)

    the original state

  • after (Hash)

    the new state

Returns:

  • (Hash)

    changed fields as { field => { from: old, to: new } }



12
13
14
15
16
17
18
19
# File 'lib/philiprehberger/audit_trail/differ.rb', line 12

def self.call(before:, after:)
  all_keys = (before.keys + after.keys).uniq
  all_keys.each_with_object({}) do |key, diff|
    old_val = before[key]
    new_val = after[key]
    diff[key] = { from: old_val, to: new_val } unless old_val == new_val
  end
end