module MongoModel::DocumentExtensions::OptimisticLocking

Public Instance Methods

locking_enabled?() click to toggle source
# File lib/mongomodel/document/optimistic_locking.rb, line 21
def locking_enabled?
  self.class.locking_enabled?
end

Private Instance Methods

increment_lock_version() click to toggle source
# File lib/mongomodel/document/optimistic_locking.rb, line 26
def increment_lock_version
  self._lock_version += 1
end
save_to_collection() click to toggle source
Calls superclass method
# File lib/mongomodel/document/optimistic_locking.rb, line 30
def save_to_collection
  if locking_enabled? && _lock_version > 1
    begin
      collection.update({ '_id' => id.to_mongo, '_lock_version' => _lock_version-1 }, to_mongo)
      success = database.get_last_error['updatedExisting']

      self._lock_version -= 1 unless success

      success
    rescue Mongo::OperationFailure => e
      false
    end
  else
    super
  end
end