Sequel::Plugins::SoftDeletes::

InstanceMethods module

Methods to extend Model instances with.

Public Instance Methods

after_soft_delete()

Default (empty) ‘after’ soft-delete hook.

    # File lib/sequel/plugins/soft_deletes.rb
144 def after_soft_delete
145     # No-op
146 end
around_soft_delete() { || ... }

Default (empty) ‘around’ soft-delete model hook.

    # File lib/sequel/plugins/soft_deletes.rb
138 def around_soft_delete
139     yield
140 end
before_soft_delete()

Default ‘before’ soft-delete hook checks if object is soft-deletable. Aborts soft-deletion if it returns false.

    # File lib/sequel/plugins/soft_deletes.rb
132 def before_soft_delete
133     return self.soft_deletable?
134 end
is_soft_deleted?()
Alias for: soft_deleted?
remove_soft_deletion_blockers()

Remove soft-deletion blockers. This is a no-op by default.

    # File lib/sequel/plugins/soft_deletes.rb
125 def remove_soft_deletion_blockers
126     # No-op
127 end
soft_deletable?()

Returns true if the object is soft-deletable. By default, an object is soft-deletable if it has no soft_deletion_blockers.

   # File lib/sequel/plugins/soft_deletes.rb
92 def soft_deletable?
93     return self.soft_deletion_blockers.empty?
94 end
soft_delete()

Soft-delete this instance.

    # File lib/sequel/plugins/soft_deletes.rb
 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
soft_delete_column()

Return the information for the soft-deletes column.

    # File lib/sequel/plugins/soft_deletes.rb
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
soft_delete_value()

Return a ‘set’ value for the soft-delete column.

    # File lib/sequel/plugins/soft_deletes.rb
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
soft_deleted?()

Returns true if this object should be considered deleted.

   # File lib/sequel/plugins/soft_deletes.rb
83 def soft_deleted?
84     column = self.class.soft_delete_column
85     return self[ column ] ? true : false
86 end
Also aliased as: is_soft_deleted?
soft_deletion_blockers()

Returns an array of conditions preventing soft-deletion. Default is an empty array.

    # File lib/sequel/plugins/soft_deletes.rb
119 def soft_deletion_blockers
120     return []
121 end