Module: Mongoid::Persistable::Minable

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

Overview

Defines behavior for setting a field (or fields) to the smaller of either it’s current value, or a given value.

Instance Method Summary collapse

Instance Method Details

#set_min(fields) ⇒ Document Also known as: clamp_upper_bound

Set the given field or fields to the smaller of either it’s current value, or a given value.

Examples:

Set a field to be no more than 100.

document.min(field: 100)

Parameters:

  • fields (Hash<Symbol | String, Comparable>)

    The fields to set, with corresponding maximum values.

Returns:



22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/mongoid/persistable/minable.rb', line 22

def set_min(fields)
  prepare_atomic_operation do |ops|
    process_atomic_operations(fields) do |field, value|
      current_value = attributes[field]
      if value < current_value
        process_attribute field, value
        ops[atomic_attribute_name(field)] = value
      end
    end
    { "$min" => ops } unless ops.empty?
  end
end