Module: Mongoid::Persistable::Logical

Extended by:
ActiveSupport::Concern
Included in:
Mongoid::Persistable
Defined in:
lib/mongoid/persistable/logical.rb

Overview

Defines behavior for logical bitwise operations.

Instance Method Summary collapse

Instance Method Details

#bit(operations) ⇒ Document

Performs an atomic $bit operation on the field with the provided hash of bitwise ops to execute in order.

Examples:

Execute the bitwise operations.

person.bit(age: { :and => 12 }, val: { and: 10, or: 12 })

Parameters:

  • operations (Hash)

    The bitwise operations.

Returns:



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/mongoid/persistable/logical.rb', line 18

def bit(operations)
  prepare_atomic_operation do |ops|
    process_atomic_operations(operations) do |field, values|
      value = attributes[field]
      values.each do |op, val|
        value &= val if op.to_s == 'and'
        value |= val if op.to_s == 'or'
      end
      process_attribute field, value if executing_atomically?
      attributes[field] = value
      ops[atomic_attribute_name(field)] = values
    end
    { '$bit' => ops } unless ops.empty?
  end
end