Sha256: 42ad94dd234f75dffeca052ad0beac816a82cd3eb525beb3a216c725af0c7c26

Contents?: true

Size: 1.03 KB

Versions: 188

Compression:

Stored size: 1.03 KB

Contents

# encoding: utf-8
module Mongoid #:nodoc:
  module Persistence #:nodoc:
    module Atomic #:nodoc:

      # This operation is for performing $bit atomic operations against the
      # database.
      class Bit
        include Operation

        # Execute the bitwise operation. This correlates to a $bit in MongoDB.
        #
        # @example Execute the op.
        #   bit.persist
        #
        # @return [ Integer ] The new value.
        #
        # @since 2.1.0
        def persist
          prepare do
            current = document[field]
            return nil unless current
            document[field] = value.inject(current) do |result, (bit, val)|
              result = result & val if bit.to_s == "and"
              result = result | val if bit.to_s == "or"
              result
            end
            document[field].tap do
              collection.update(document.atomic_selector, operation("$bit"), options)
              document.remove_change(field)
            end
          end
        end
      end
    end
  end
end

Version data entries

188 entries across 96 versions & 4 rubygems

Version Path
classiccms-0.5.9 vendor/bundle/gems/mongoid-2.4.9/lib/mongoid/persistence/atomic/bit.rb
classiccms-0.5.9 vendor/bundle/gems/mongoid-2.4.10/lib/mongoid/persistence/atomic/bit.rb
classiccms-0.5.9 vendor/bundle/gems/mongoid-2.4.7/lib/mongoid/persistence/atomic/bit.rb
classiccms-0.5.8 vendor/bundle/gems/mongoid-2.4.9/lib/mongoid/persistence/atomic/bit.rb
classiccms-0.5.8 vendor/bundle/gems/mongoid-2.4.10/lib/mongoid/persistence/atomic/bit.rb
classiccms-0.5.8 vendor/bundle/gems/mongoid-2.4.7/lib/mongoid/persistence/atomic/bit.rb
classiccms-0.5.7 vendor/bundle/gems/mongoid-2.4.10/lib/mongoid/persistence/atomic/bit.rb
classiccms-0.5.7 vendor/bundle/gems/mongoid-2.4.7/lib/mongoid/persistence/atomic/bit.rb
classiccms-0.5.7 vendor/bundle/gems/mongoid-2.4.9/lib/mongoid/persistence/atomic/bit.rb
classiccms-0.5.6 vendor/bundle/gems/mongoid-2.4.7/lib/mongoid/persistence/atomic/bit.rb
classiccms-0.5.6 vendor/bundle/gems/mongoid-2.4.10/lib/mongoid/persistence/atomic/bit.rb
classiccms-0.5.6 vendor/bundle/gems/mongoid-2.4.9/lib/mongoid/persistence/atomic/bit.rb
classiccms-0.5.5 vendor/bundle/gems/mongoid-2.4.7/lib/mongoid/persistence/atomic/bit.rb
classiccms-0.5.5 vendor/bundle/gems/mongoid-2.4.10/lib/mongoid/persistence/atomic/bit.rb
classiccms-0.5.5 vendor/bundle/gems/mongoid-2.4.9/lib/mongoid/persistence/atomic/bit.rb
classiccms-0.5.2 vendor/bundle/gems/mongoid-2.4.7/lib/mongoid/persistence/atomic/bit.rb
classiccms-0.5.2 vendor/bundle/gems/mongoid-2.4.10/lib/mongoid/persistence/atomic/bit.rb
classiccms-0.5.2 vendor/bundle/gems/mongoid-2.4.9/lib/mongoid/persistence/atomic/bit.rb
classiccms-0.5.1 vendor/bundle/gems/mongoid-2.4.10/lib/mongoid/persistence/atomic/bit.rb
classiccms-0.5.1 vendor/bundle/gems/mongoid-2.4.9/lib/mongoid/persistence/atomic/bit.rb