Module: Sequel::Plugins::SoftDeletes::InstanceMethods
- Defined in:
- lib/sequel/plugins/soft_deletes.rb
Overview
Methods to extend Model instances with.
Instance Method Summary collapse
-
#after_soft_delete ⇒ Object
Default (empty) ‘after’ soft-delete hook.
-
#around_soft_delete ⇒ Object
Default (empty) ‘around’ soft-delete model hook.
-
#before_soft_delete ⇒ Object
Default ‘before’ soft-delete hook checks if object is soft-deletable.
-
#remove_soft_deletion_blockers ⇒ Object
Remove soft-deletion blockers.
-
#soft_deletable? ⇒ Boolean
Returns
true
if the object is soft-deletable. -
#soft_delete ⇒ Object
Soft-delete this instance.
-
#soft_delete_column ⇒ Object
Return the information for the soft-deletes column.
-
#soft_deleted? ⇒ Boolean
(also: #is_soft_deleted?)
Returns
true
if this object should be considered deleted. -
#soft_deletion_blockers ⇒ Object
Returns an array of conditions preventing soft-deletion.
Instance Method Details
#after_soft_delete ⇒ Object
Default (empty) ‘after’ soft-delete hook.
112 |
# File 'lib/sequel/plugins/soft_deletes.rb', line 112 def after_soft_delete; end |
#around_soft_delete ⇒ Object
Default (empty) ‘around’ soft-delete model hook.
107 108 109 |
# File 'lib/sequel/plugins/soft_deletes.rb', line 107 def around_soft_delete yield end |
#before_soft_delete ⇒ Object
Default ‘before’ soft-delete hook checks if object is soft-deletable. Aborts soft-deletion if it returns false.
102 103 104 |
# File 'lib/sequel/plugins/soft_deletes.rb', line 102 def before_soft_delete return self.soft_deletable? end |
#remove_soft_deletion_blockers ⇒ Object
Remove soft-deletion blockers. Default soft-deletion raises NotImplementedError.
96 97 98 |
# File 'lib/sequel/plugins/soft_deletes.rb', line 96 def remove_soft_deletion_blockers raise NotImplementedError end |
#soft_deletable? ⇒ Boolean
Returns true
if the object is soft-deletable. By default, an object is soft-deletable if it has no soft_deletion_blockers
.
68 69 70 |
# File 'lib/sequel/plugins/soft_deletes.rb', line 68 def soft_deletable? return self.soft_deletion_blockers.empty? end |
#soft_delete ⇒ Object
Soft-delete this instance.
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/sequel/plugins/soft_deletes.rb', line 73 def soft_delete column = self.class.soft_delete_column self.db.transaction do supered_from_around = false self.around_soft_delete do supered_from_around = true raise_hook_failure(:before_soft_delete) unless self.before_soft_delete self.update(column => Time.now) self.after_soft_delete end raise_hook_failure(:around_soft_delete) unless supered_from_around end end |
#soft_delete_column ⇒ Object
Return the information for the soft-deletes column.
115 116 117 118 119 |
# File 'lib/sequel/plugins/soft_deletes.rb', line 115 def soft_delete_column return self.class.schema.columns.find do |col| col[:name] == self.class.soft_delete_column end end |
#soft_deleted? ⇒ Boolean Also known as: is_soft_deleted?
Returns true
if this object should be considered deleted.
59 60 61 62 |
# File 'lib/sequel/plugins/soft_deletes.rb', line 59 def soft_deleted? column = self.class.soft_delete_column return self[column] ? true : false end |
#soft_deletion_blockers ⇒ Object
Returns an array of conditions preventing soft-deletion. Default is an empty array.
91 92 93 |
# File 'lib/sequel/plugins/soft_deletes.rb', line 91 def soft_deletion_blockers return [] end |