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
-
#bit(operations) ⇒ Document
Performs an atomic $bit operation on the field with the provided hash of bitwise ops to execute in order.
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.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/mongoid/persistable/logical.rb', line 20 def bit(operations) prepare_atomic_operation do |ops| process_atomic_operations(operations) do |field, values| value = attributes[field] values.each do |op, val| value = value & val if op.to_s == "and" value = 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 |