Module: MongoidExt::Paranoia::ClassMethods
- Defined in:
- lib/mongoid_ext/paranoia.rb
Overview
:nodoc:
Instance Method Summary collapse
-
#deleted ⇒ Object
Find deleted documents.
- #paranoia_klass ⇒ Object
Instance Method Details
#deleted ⇒ Object
Find deleted documents
Examples:
<tt>Person.deleted</tt> # all deleted employees
<tt>Company.first.employees.deleted</tt> # works with a join
<tt>Person.deleted.find("4c188dea7b17235a2a000001").first</tt>
<tt>Person.deleted.compact!(1.week.ago)</tt>
64 65 66 |
# File 'lib/mongoid_ext/paranoia.rb', line 64 def deleted self.paranoia_klass end |
#paranoia_klass ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/mongoid_ext/paranoia.rb', line 69 def paranoia_klass parent_klass = self @paranoia_klass ||= Class.new do include Mongoid::Document include Mongoid::Timestamps cattr_accessor :parent_class self.parent_class = parent_klass collection_name = "#{self.parent_class.collection.name}.trash" self. = {:collection => collection_name} field :document, :type => Hash before_validation :set_id, :on => :create def restore self.class.parent_class.create(self.document) end def self.compact!(date = 1.month.ago) self.delete_all(:created_at => {:$lte => date.to_time}) end private def set_id self["_id"] = self.document["_id"] end end end |