Sequel::Plugins::SoftDeletes::
InstanceMethods
module
Methods to extend Model instances with.
Default (empty) ‘after’ soft-delete hook.
144 def after_soft_delete
145
146 end
around_soft_delete() { || ... }
Default (empty) ‘around’ soft-delete model hook.
138 def around_soft_delete
139 yield
140 end
Default ‘before’ soft-delete hook checks if object is soft-deletable. Aborts soft-deletion if it returns false.
132 def before_soft_delete
133 return self.soft_deletable?
134 end
remove_soft_deletion_blockers()
Remove soft-deletion blockers. This is a no-op by default.
125 def remove_soft_deletion_blockers
126
127 end
Returns true
if the object is soft-deletable. By default, an object is soft-deletable if it has no soft_deletion_blockers
.
92 def soft_deletable?
93 return self.soft_deletion_blockers.empty?
94 end
Soft-delete this instance.
98 def soft_delete
99 column = self.class.soft_delete_column
100 value = self.soft_delete_value
101
102 self.log.info "Soft-deleting %p[%d]" % [ self.class, self.pk ]
103 self.db.transaction do
104 supered_from_around = false
105 self.around_soft_delete do
106 supered_from_around = true
107 raise_hook_failure( :before_soft_delete ) if self.before_soft_delete == false
108
109 self.update( column => value )
110
111 self.after_soft_delete
112 end
113 raise_hook_failure( :around_soft_delete ) unless supered_from_around
114 end
115 end
Return the information for the soft-deletes column.
150 def soft_delete_column
151 return self.class.schema.columns.find do |col|
152 col[:name] == self.class.soft_delete_column
153 end
154 end
Return a ‘set’ value for the soft-delete column.
158 def soft_delete_value
159 column = self.soft_delete_column or
160 raise "Can't find the soft-delete column (%s)" % [ self.class.soft_delete_column ]
161
162 return Time.now if column[:type] == Time
163
164 case column[:type]
165 when :timestamp, :timestamptz
166 return Time.now
167 when :boolean
168 return true
169 else
170 raise "I don't know how to set the %p column to soft delete. ( type: %p )" %
171 [ column[:name], column[:type] ]
172 end
173 end
Returns true
if this object should be considered deleted.
83 def soft_deleted?
84 column = self.class.soft_delete_column
85 return self[ column ] ? true : false
86 end
Returns an array of conditions preventing soft-deletion. Default is an empty array.
119 def soft_deletion_blockers
120 return []
121 end