Module: Lite::Archive::Base

Defined in:
lib/lite/archive/base.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



7
8
9
10
11
12
13
14
# File 'lib/lite/archive/base.rb', line 7

def self.included(base)
  base.extend Methods
  base.extend Scopes

  base.instance_eval do
    %i[archive unarchive].each { |name| define_model_callbacks name, only: %i[before after] }
  end
end

Instance Method Details

#archivable?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/lite/archive/base.rb', line 22

def archivable?
  respond_to?(:archived_at)
end

#archival?Boolean

Returns:

  • (Boolean)


16
17
18
19
20
# File 'lib/lite/archive/base.rb', line 16

def archival?
  return destroyed? if unarchivable?

  (will_save_change_to_archived_at? || saved_change_to_archived_at?) && archived?
end

#archiveObject



30
31
32
33
34
35
36
37
38
39
40
# File 'lib/lite/archive/base.rb', line 30

def archive
  return destroy if unarchivable?

  with_transaction_returning_status do
    run_callbacks :archive do
      mark_as_archived
      mark_relections_as_archived
      self
    end
  end
end

#archived?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/lite/archive/base.rb', line 26

def archived?
  archivable? ? !archived_at.nil? : destroyed?
end

#to_archivalObject



68
69
70
# File 'lib/lite/archive/base.rb', line 68

def to_archival
  I18n.t("lite.archive.archival.#{:un unless archived?}archived")
end

#unarchivable?Boolean

Returns:

  • (Boolean)


52
53
54
# File 'lib/lite/archive/base.rb', line 52

def unarchivable?
  !archivable?
end

#unarchival?Boolean

Returns:

  • (Boolean)


42
43
44
45
46
# File 'lib/lite/archive/base.rb', line 42

def unarchival?
  return !destroyed? if unarchivable?

  (will_save_change_to_archived_at? || saved_change_to_archived_at?) && unarchived?
end

#unarchiveObject



56
57
58
59
60
61
62
63
64
65
66
# File 'lib/lite/archive/base.rb', line 56

def unarchive
  return self if unarchivable?

  with_transaction_returning_status do
    run_callbacks :unarchive do
      mark_as_unarchived
      mark_relections_as_unarchived
      self
    end
  end
end

#unarchived?Boolean

Returns:

  • (Boolean)


48
49
50
# File 'lib/lite/archive/base.rb', line 48

def unarchived?
  !archived?
end