module HasArchive::InstanceMethods

Public Instance Methods

archive(force: false) click to toggle source
# File lib/has_archive.rb, line 37
def archive(force: false)
  attrs = self.attributes
  archive = self.class::Archive.new(attrs)
  archive.archived_at = Time.now
  archive.save(validate: false)
  self.destroy(for_real: true)
rescue ActiveRecord::RecordNotUnique => e
  if force
    self.class::Archive.where(id: archive.id).map(&:destroy)
    self.archive
  else
    Rails.logger.warn "Rescued attempt to archive record with existing key: #{archive.id}."
    false
  end
end
destroy(for_real: false, force: false) click to toggle source
Calls superclass method
# File lib/has_archive.rb, line 53
def destroy(for_real: false, force: false)
  if !for_real && Rails.configuration.has_archive.override_destroy
    archive(force: force)
  else
    super()
  end
end