Module: SoftDeletion::Core
- Defined in:
- lib/soft_deletion/core.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
- #deleted? ⇒ Boolean
- #mark_as_deleted ⇒ Object
- #mark_as_undeleted ⇒ Object
- #soft_delete(*args) ⇒ Object
- #soft_delete!(*args) ⇒ Object
- #soft_delete_dependencies ⇒ Object
- #soft_undelete ⇒ Object
- #soft_undelete! ⇒ Object
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
55 56 57 |
# File 'lib/soft_deletion/core.rb', line 55 def deleted? deleted_at.present? end |
#mark_as_deleted ⇒ Object
59 60 61 |
# File 'lib/soft_deletion/core.rb', line 59 def mark_as_deleted self.deleted_at ||= Time.now end |
#mark_as_undeleted ⇒ Object
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_dependencies ⇒ Object
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_undelete ⇒ Object
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 |