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