Sha256: 1536a19361f07dbe62d61318922c96fcc5fab548eafc963e693a968f0583105b

Contents?: true

Size: 899 Bytes

Versions: 32

Compression:

Stored size: 899 Bytes

Contents

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

      # 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
            execute("$bit")
            document[field]
          end
        end
      end
    end
  end
end

Version data entries

32 entries across 32 versions & 2 rubygems

Version Path
mongoid-3.1.7 lib/mongoid/persistence/atomic/bit.rb
mongoid-3.1.6 lib/mongoid/persistence/atomic/bit.rb
mongoid-3.1.5 lib/mongoid/persistence/atomic/bit.rb
mongoid-3.1.4 lib/mongoid/persistence/atomic/bit.rb
mongoid-3.1.3 lib/mongoid/persistence/atomic/bit.rb
mongoid-3.1.2 lib/mongoid/persistence/atomic/bit.rb
mongoid-3.0.23 lib/mongoid/persistence/atomic/bit.rb
mongoid-3.1.1 lib/mongoid/persistence/atomic/bit.rb
mongoid-3.1.0 lib/mongoid/persistence/atomic/bit.rb
mongoid-3.0.22 lib/mongoid/persistence/atomic/bit.rb
mongoid-3.0.21 lib/mongoid/persistence/atomic/bit.rb
mongoid-3.0.20 lib/mongoid/persistence/atomic/bit.rb
mongoid-3.0.19 lib/mongoid/persistence/atomic/bit.rb
mongoid-3.0.18 lib/mongoid/persistence/atomic/bit.rb
mongoid-3.0.17 lib/mongoid/persistence/atomic/bit.rb
sunrise-cms-0.5.0.rc1 vendor/bundle/ruby/1.9.1/gems/mongoid-3.0.16/lib/mongoid/persistence/atomic/bit.rb
mongoid-3.0.16 lib/mongoid/persistence/atomic/bit.rb
mongoid-3.0.15 lib/mongoid/persistence/atomic/bit.rb
mongoid-3.0.14 lib/mongoid/persistence/atomic/bit.rb
mongoid-3.0.13 lib/mongoid/persistence/atomic/bit.rb