class Spree::Preferences::PreferenceDifferentiator

Attributes

config_class[R]

Public Class Methods

new(config_class) click to toggle source
# File lib/spree/preferences/preference_differentiator.rb, line 8
def initialize(config_class)
  @config_class = config_class
end

Public Instance Methods

call(from:, to:) click to toggle source
# File lib/spree/preferences/preference_differentiator.rb, line 12
def call(from:, to:)
  preferences_from = config_class.new.load_defaults(from)
  preferences_to = config_class.new.load_defaults(to)
  preferences_from.reduce({}) do |changes, (pref_key, value_from)|
    value_to = preferences_to[pref_key]
    if value_from == value_to
      changes
    else
      changes.merge(
        pref_key => { from: value_from, to: value_to }
      )
    end
  end
end