module ActiveAdmin::Audit::HasVersions

Public Instance Methods

additional_objects_snapshot_changes() click to toggle source
# File lib/active_admin/audit/has_versions.rb, line 88
def additional_objects_snapshot_changes
  prev_version = versions.last

  old_snapshot = prev_version.try(:additional_objects) || VersionSnapshot.new
  new_snapshot = additional_objects_snapshot

  old_snapshot.diff(new_snapshot)
end
latest_versions(count = 5) click to toggle source
# File lib/active_admin/audit/has_versions.rb, line 84
def latest_versions(count = 5)
  versions.reorder(created_at: :desc).limit(count).rewhere(item_type: self.class.name)
end

Private Instance Methods

cache_version_additional_objects_and_changes() click to toggle source
# File lib/active_admin/audit/has_versions.rb, line 107
def cache_version_additional_objects_and_changes
  @version_additional_objects_and_changes_cache ||= paper_trail.merge_metadata_into({})
end
cache_version_object() click to toggle source
# File lib/active_admin/audit/has_versions.rb, line 99
def cache_version_object
  @version_object_cache ||= paper_trail.object_attrs_for_paper_trail
end
cache_version_object_changes() click to toggle source
# File lib/active_admin/audit/has_versions.rb, line 103
def cache_version_object_changes
  @version_object_changes_cache ||= paper_trail.changes
end
clear_version_cache() click to toggle source
# File lib/active_admin/audit/has_versions.rb, line 111
def clear_version_cache
  @version_object_cache = nil
  @version_object_changes_cache = nil
  @version_additional_objects_and_changes_cache = nil
end
generate_version!() click to toggle source
# File lib/active_admin/audit/has_versions.rb, line 117
def generate_version!
  data = {
    event: @event_for_paper_trail,
    object: cache_version_object.to_json,
    object_changes: cache_version_object_changes.to_json,
    whodunnit: PaperTrail.whodunnit.try(:id),
    item_type: self.class.name,
    item_id: id,
  }

  PaperTrail::Version.create! data.merge!(cache_version_additional_objects_and_changes)

  clear_version_cache
end