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
15
# File 'lib/lite/archive/base.rb', line 7

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

  base.instance_eval do
    define_model_callbacks :archive, only: %i[before after]
    define_model_callbacks :unarchive, only: %i[before after]
  end
end

Instance Method Details

#archivable?Boolean

Returns:

  • (Boolean)


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

def archivable?
  respond_to?(:archived_at)
end

#archival?Boolean

Returns:

  • (Boolean)


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

def archival?
  return destroyed? if unarchivable?

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

#archiveObject



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

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)


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

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

#to_archivalObject



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

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

#unarchivable?Boolean

Returns:

  • (Boolean)


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

def unarchivable?
  !archivable?
end

#unarchival?Boolean

Returns:

  • (Boolean)


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

def unarchival?
  return !destroyed? if unarchivable?

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

#unarchiveObject



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

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)


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

def unarchived?
  !archived?
end