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! ⇒ Object
- #soft_delete_dependencies ⇒ Object
- #soft_undelete! ⇒ Object
Class Method Details
.included(base) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# 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) # backport after_soft_delete so we can safely upgrade to rails 3 if ActiveRecord::VERSION::MAJOR > 2 base.define_model_callbacks :soft_delete else base.define_callbacks :before_soft_delete base.define_callbacks :after_soft_delete end end |
Instance Method Details
#deleted? ⇒ Boolean
66 67 68 |
# File 'lib/soft_deletion/core.rb', line 66 def deleted? deleted_at.present? end |
#mark_as_deleted ⇒ Object
70 71 72 |
# File 'lib/soft_deletion/core.rb', line 70 def mark_as_deleted self.deleted_at = Time.now end |
#mark_as_undeleted ⇒ Object
74 75 76 |
# File 'lib/soft_deletion/core.rb', line 74 def mark_as_undeleted self.deleted_at = nil end |
#soft_delete(*args) ⇒ Object
82 83 84 |
# File 'lib/soft_deletion/core.rb', line 82 def soft_delete(*args) _run_soft_delete{ save(*args) } end |
#soft_delete! ⇒ Object
78 79 80 |
# File 'lib/soft_deletion/core.rb', line 78 def soft_delete! _run_soft_delete { save! } end |
#soft_delete_dependencies ⇒ Object
94 95 96 |
# File 'lib/soft_deletion/core.rb', line 94 def soft_delete_dependencies self.class.soft_delete_dependents.map { |dependent| SoftDeletion::Dependency.new(self, dependent) } end |
#soft_undelete! ⇒ Object
86 87 88 89 90 91 92 |
# File 'lib/soft_deletion/core.rb', line 86 def soft_undelete! self.class.transaction do mark_as_undeleted soft_delete_dependencies.each(&:soft_undelete!) save! end end |