class FastVersioning::ValueChange

Public Class Methods

new(version:) click to toggle source
# File lib/fast_versioning/value_change.rb, line 3
def initialize(version:)
  @version = version
  @item = version.item
end

Public Instance Methods

value_became(name) click to toggle source
# File lib/fast_versioning/value_change.rb, line 16
def value_became(name)
  if can_use_changeset?(name)
    @version.changeset[name][1]
  else
    item_became.send(name)
  end
end
value_was(name) click to toggle source
# File lib/fast_versioning/value_change.rb, line 8
def value_was(name)
  if can_use_changeset?(name)
    @version.changeset[name][0]
  else
    item_was.send(name)
  end
end

Private Instance Methods

can_use_changeset?(name) click to toggle source
# File lib/fast_versioning/value_change.rb, line 26
def can_use_changeset?(name)
  @version.respond_to?(:changeset) && @version.changeset[name].present?
end
item_became() click to toggle source

TODO: support different paper_trail versions

# File lib/fast_versioning/value_change.rb, line 36
def item_became
  @item_became ||= @version.next.present? ? @version.next.reify(dup: true) : @item
end
item_was() click to toggle source

TODO: support different paper_trail versions

# File lib/fast_versioning/value_change.rb, line 31
def item_was
  @item_was ||= @version.reify(dup: true) || @item.class.new
end