module MongoidVersioning
Constants
- VERSION
Public Instance Methods
_revise()
click to toggle source
# File lib/mongoid_versioning/versioned.rb, line 98 def _revise loop do previous_doc = latest_version previous_doc['_orig_id'] = previous_doc['_id'] previous_doc['_id'] = BSON::ObjectId.new current_version = previous_doc._version res1 = self.class.versions_collection.find(_orig_id: previous_doc['_orig_id'], _version: previous_doc._version) previous_doc[:_version] = current_version if previous_doc[:_version].nil? self.class.versions_collection.insert_one(previous_doc.as_document) if res1.count == 0 self._based_on_version = _version || current_version self._version = current_version+1 res2 = self.class.collection.find(_id: id, _version: current_version).update_one(self.as_document) # replay flow if someone else updated the document before us break unless res2.n != 1 end if version_max.present? && versions.length > version_max self.class.versions_collection.find(_orig_id: self.id, _version: versions.min_by(&:_version)._version).delete_many end end
revert_id()
click to toggle source
# File lib/mongoid_versioning/versioned.rb, line 93 def revert_id return unless self['_orig_id'] self._id = self['_orig_id'] end