Module: SoftDeletion::Core

Defined in:
lib/soft_deletion/core.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



3
4
5
6
7
8
9
10
11
12
# File 'lib/soft_deletion/core.rb', line 3

def self.included(base)
  unless base.ancestors.include?(ActiveRecord::Base)
    raise "You can only include this if #{base} extends ActiveRecord::Base"
  end
  base.extend(ClassMethods)

  base.define_model_callbacks :soft_delete
  base.define_model_callbacks :soft_undelete
  base.cattr_accessor :soft_delete_default_scope
end

Instance Method Details

#deleted?Boolean

Returns:

  • (Boolean)


55
56
57
# File 'lib/soft_deletion/core.rb', line 55

def deleted?
  deleted_at.present?
end

#mark_as_deletedObject



59
60
61
# File 'lib/soft_deletion/core.rb', line 59

def mark_as_deleted
  self.deleted_at ||= Time.now
end

#mark_as_undeletedObject



63
64
65
# File 'lib/soft_deletion/core.rb', line 63

def mark_as_undeleted
  self.deleted_at = nil
end

#soft_delete(*args) ⇒ Object



71
72
73
# File 'lib/soft_deletion/core.rb', line 71

def soft_delete(*args)
  _run_soft_delete(:soft_delete, args) { save(*args) }
end

#soft_delete!(*args) ⇒ Object



67
68
69
# File 'lib/soft_deletion/core.rb', line 67

def soft_delete!(*args)
  _run_soft_delete(:soft_delete!, args) { save!(*args) } || soft_delete_hook_failed(:before_soft_delete)
end

#soft_delete_dependenciesObject



83
84
85
# File 'lib/soft_deletion/core.rb', line 83

def soft_delete_dependencies
  self.class.soft_delete_dependents.map { |dependent| SoftDeletion::Dependency.new(self, dependent) }
end

#soft_undeleteObject



75
76
77
# File 'lib/soft_deletion/core.rb', line 75

def soft_undelete
  _run_soft_undelete{ save }
end

#soft_undelete!Object



79
80
81
# File 'lib/soft_deletion/core.rb', line 79

def soft_undelete!
  _run_soft_undelete{ save! } || soft_delete_hook_failed(:before_soft_undelete)
end