Method: Payjp::PayjpObject#refresh_from

Defined in:
lib/payjp/payjp_object.rb

#refresh_from(values, opts, partial = false) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/payjp/payjp_object.rb', line 42

def refresh_from(values, opts, partial = false)
  @opts = opts
  @original_values = Marshal.load(Marshal.dump(values)) # deep copy
  removed = partial ? Set.new : Set.new(@values.keys - values.keys)
  added = Set.new(values.keys - @values.keys)
  # Wipe old state before setting new.  This is useful for e.g. updating a
  # customer, where there is no persistent card parameter.  Mark those values
  # which don't persist as transient

  instance_eval do
    remove_accessors(removed)
    add_accessors(added)
  end
  removed.each do |k|
    @values.delete(k)
    @transient_values.add(k)
    @unsaved_values.delete(k)
  end
  values.each do |k, v|
    @values[k] = Util.convert_to_payjp_object(v, @opts)
    @transient_values.delete(k)
    @unsaved_values.delete(k)
  end

  self
end