Class: ThemeSettingsMigration

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/theme_settings_migration.rb

Instance Method Summary collapse

Instance Method Details

#calculate_diff(settings_before, settings_after) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'app/models/theme_settings_migration.rb', line 14

def calculate_diff(settings_before, settings_after)
  diff = { additions: [], deletions: [] }

  before_keys = settings_before.keys
  after_keys = settings_after.keys

  removed_keys = before_keys - after_keys
  removed_keys.each { |key| diff[:deletions] << { key: key, val: settings_before[key] } }

  added_keys = after_keys - before_keys
  added_keys.each { |key| diff[:additions] << { key: key, val: settings_after[key] } }

  common_keys = before_keys & after_keys
  common_keys.each do |key|
    if settings_before[key] != settings_after[key]
      diff[:deletions] << { key: key, val: settings_before[key] }
      diff[:additions] << { key: key, val: settings_after[key] }
    end
  end

  self.diff = diff
end