module FastVersioning::PaperTrailExtensions

Public Instance Methods

create_fast_versions() click to toggle source
# File lib/fast_versioning/paper_trail_extensions.rb, line 10
def create_fast_versions
  if item.respond_to?(:fast_version_for, true)
    value_change = FastVersioning::ValueChange.new(version: self)

    item.send(:fast_version_for).each do |tracked_attribute|
      name = tracked_attribute.name
      new_value = value_change.value_became(name)
      prev_value = value_change.value_was(name)

      # Skip if value unchanged.
      next if prev_value == new_value

      fast_versions.create(
        item_id: item_id,
        item_type: item_type,
        whodunnit_id: whodunnit&.to_i,
        whodunnit_type: whodunnit_type,
        name: name,
        value: new_value,
        prev_value: prev_value,
        meta: tracked_attribute.meta,
        created_at: created_at
      )
    end
  end
  true
end
recreate_fast_versions!() click to toggle source
# File lib/fast_versioning/paper_trail_extensions.rb, line 38
def recreate_fast_versions!
  fast_versions.destroy_all
  create_fast_versions
end