module MongoMapper::SoftDeleted::InstanceMethods

Public Instance Methods

on_soft_delete_restore() click to toggle source

override this on classes

# File lib/mongo_mapper/soft_deleted.rb, line 69
def on_soft_delete_restore
end
soft_delete_destroy(obj) click to toggle source
# File lib/mongo_mapper/soft_deleted.rb, line 32
def soft_delete_destroy(obj)
  db = MongoMapper.database

  row = obj.attributes.dup
  row[:_type] = obj.class.name
  row[:_deleted_at] = Time.now
  row[:_original_type] = obj.attributes[:_type]

  begin
    db['soft_deleted_records'].insert(row)
  rescue Mongo::OperationFailure
  end
end
soft_delete_restore!() click to toggle source
# File lib/mongo_mapper/soft_deleted.rb, line 46
def soft_delete_restore!
  db = MongoMapper.database
  source_class = _type.constantize
  collection_name = source_class.collection_name

  attrs_for_insertion = attributes.except(:_type, :_deleted_at, :_original_type)
  if !attributes[:_original_type].blank?
    attrs_for_insertion[:_type] = attributes[:_original_type]
  end

  db[collection_name].insert(attrs_for_insertion)
  db['soft_deleted_records'].remove({
    _id: id
  })

  source_class.find(id).on_soft_delete_restore
end
soft_deleted?() click to toggle source
# File lib/mongo_mapper/soft_deleted.rb, line 64
def soft_deleted?
  respond_to?(:_deleted_at) && _deleted_at ? true : false
end