123456789_123456789_123456789_123456789_123456789_

Module: Mongoid::Persistable::Incrementable

Relationships & Source Files
Extension / Inclusion / Inheritance Descendants
Included In:
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
self, ActiveSupport::Concern
Defined in: lib/mongoid/persistable/incrementable.rb

Overview

Defines behavior for $inc operations.

Instance Method Summary

Instance Method Details

#inc(increments) ⇒ Document

Increment the provided fields by the corresponding values. Values can be positive or negative, and if no value exists for the field it will be set with the provided value.

Examples:

Increment the fields.

document.inc(score: 10, place: 1, lives: -10)

Parameters:

  • increments (Hash)

    The field/inc increment pairs.

Returns:

[ GitHub ]

  
# File 'lib/mongoid/persistable/incrementable.rb', line 21

def inc(increments)
  prepare_atomic_operation do |ops|
    process_atomic_operations(increments) do |field, value|
      increment = value.is_a?(BigDecimal) ? value.to_f : value
      current = attributes[field]
      new_value = (current || 0) + increment
      process_attribute field, new_value if executing_atomically?
      attributes[field] = new_value
      ops[atomic_attribute_name(field)] = increment
    end
    { "$inc" => ops } unless ops.empty?
  end
end