lib/mongoid/locker/wrapper.rb in mongoid-locker-0.3.2 vs lib/mongoid/locker/wrapper.rb in mongoid-locker-0.3.3

- old
+ new

@@ -1,26 +1,25 @@ +require 'mongoid/compatibility' + module Mongoid module Locker # Normalizes queries between Mongoid 2 and 3. module Wrapper - IS_OLD_MONGOID = Mongoid::VERSION.start_with? '2.' - # Update the document for the provided Class matching the provided query with the provided setter. # # @param [Class] The model class # @param [Hash] The Mongoid query # @param [Hash] The Mongoid setter # @return [Boolean] true if the document was successfully updated, false otherwise def self.update(klass, query, setter) - error_obj = - if IS_OLD_MONGOID - klass.collection.update(query, setter, safe: true) - else - klass.with(safe: true).collection.find(query).update(setter) - end - - error_obj['n'] == 1 + if Mongoid::Compatibility::Version.mongoid5? + !klass.with(safe: true).collection.find(query).find_one_and_update(setter).nil? + elsif Mongoid::Compatibility::Version.mongoid2? + klass.collection.update(query, setter, safe: true)['n'] == 1 + else + klass.with(safe: true).collection.find(query).update(setter)['n'] == 1 + end end # Determine whether the provided document is locked in the database or not. # # @param [Class] The model instance @@ -29,10 +28,10 @@ existing_query = { _id: doc.id, locked_until: { '$exists' => true } } - if IS_OLD_MONGOID + if Mongoid::Compatibility::Version.mongoid2? existing = doc.class.collection.find_one(existing_query, fields: { locked_until: 1 }) existing ? existing['locked_until'] : nil else existing = doc.class.where(existing_query).limit(1).only(:locked_until).first existing ? existing.locked_until : nil