Module: HasArchive

Defined in:
lib/has_archive.rb,
lib/has_archive/hook.rb,
lib/has_archive/railtie.rb,
lib/has_archive/version.rb,
lib/has_archive/migration_manager.rb,
lib/has_archive/migration_exists_exception.rb

Defined Under Namespace

Modules: ClassMethods, Hook, InstanceMethods Classes: MigrationExistsException, MigrationManager, Railtie

Constant Summary collapse

VERSION =
"0.6.2"

Class Method Summary collapse

Class Method Details

.included(base) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/has_archive.rb', line 6

def self.included(base)
  base.send :extend, ClassMethods
  base.send :include, InstanceMethods

  eval <<-RUBY
    class #{base}::Archive < #{base}
      self.table_name = "#{base.to_s.underscore}_archives"

      def destroy(*args, **kwargs)
        super(for_real: true)
      end

      def restore
        attrs = self.attributes
        attrs.delete('archived_at')
        restored = self.class.parent.new(attrs)
        restored.save && self.destroy(for_real: true)
        self
      end
    end
  RUBY
end