Module: MongoMapper::SoftDeleted::InstanceMethods

Defined in:
lib/mongo_mapper/soft_deleted.rb

Instance Method Summary collapse

Instance Method Details

#on_soft_delete_restoreObject

override this on classes



69
70
# File 'lib/mongo_mapper/soft_deleted.rb', line 69

def on_soft_delete_restore
end

#soft_delete_destroy(obj) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
# 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!Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# 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?Boolean

Returns:

  • (Boolean)


64
65
66
# File 'lib/mongo_mapper/soft_deleted.rb', line 64

def soft_deleted?
  respond_to?(:_deleted_at) && _deleted_at ? true : false
end