module Disposable::Twin::Changed

Public Class Methods

new(model, *args) click to toggle source
Calls superclass method
# File lib/disposable/twin/changed.rb, line 25
def initialize(model, *args)
  super         # Setup#initialize.
  @_changes = Changes.new # override changed from initialize.
end

Public Instance Methods

changed() click to toggle source

this is usually called only once in Sync::SkipUnchanged, per twin.

# File lib/disposable/twin/changed.rb, line 18
def changed
  _find_changed_twins!(@_changes)

  @_changes
end
changed?(*args) click to toggle source
# File lib/disposable/twin/changed.rb, line 11
def changed?(*args) # not recommended for external use?
  changed.changed?(*args)
end

Private Instance Methods

_changed() click to toggle source
# File lib/disposable/twin/changed.rb, line 30
def _changed
  @_changes ||= Changes.new # FIXME: why do we need to re-initialize here?
end
_find_changed_twins!(changes) click to toggle source
# File lib/disposable/twin/changed.rb, line 42
def _find_changed_twins!(changes) # FIXME: this will change soon. don't touch.
  schema.each(twin: true) do |dfn|
    next unless twin = send(dfn.getter)
    next unless twin.changed?

    changes[dfn[:name]] = true
  end
end
write_property(name, value, dfn) click to toggle source
Calls superclass method
# File lib/disposable/twin/changed.rb, line 34
def write_property(name, value, dfn)
  old_value = field_read(name)

  super.tap do
    _changed[name.to_s] = old_value != value
  end
end