module Sequel::Plugins::SoftDeletes::InstanceMethods

Methods to extend Model instances with.

Public Instance Methods

after_soft_delete() click to toggle source

Default (empty) 'after' soft-delete hook.

# File lib/sequel/plugins/soft_deletes.rb, line 112
def after_soft_delete; end
around_soft_delete() { || ... } click to toggle source

Default (empty) 'around' soft-delete model hook.

# File lib/sequel/plugins/soft_deletes.rb, line 107
def around_soft_delete
  yield
end
before_soft_delete() click to toggle source

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, line 102
def before_soft_delete
  return self.soft_deletable?
end
is_soft_deleted?()
Alias for: soft_deleted?
remove_soft_deletion_blockers() click to toggle source

Remove soft-deletion blockers. Default soft-deletion raises NotImplementedError.

# File lib/sequel/plugins/soft_deletes.rb, line 96
def remove_soft_deletion_blockers
  raise NotImplementedError
end
soft_deletable?() click to toggle source

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, line 68
def soft_deletable?
  return self.soft_deletion_blockers.empty?
end
soft_delete() click to toggle source

Soft-delete this instance.

# 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() click to toggle source

Return the information for the soft-deletes column.

# 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?() click to toggle source

Returns true if this object should be considered deleted.

# File lib/sequel/plugins/soft_deletes.rb, line 59
def soft_deleted?
  column = self.class.soft_delete_column
  return self[column] ? true : false
end
Also aliased as: is_soft_deleted?
soft_deletion_blockers() click to toggle source

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

# File lib/sequel/plugins/soft_deletes.rb, line 91
def soft_deletion_blockers
  return []
end