123456789_123456789_123456789_123456789_123456789_

Module: Mongoid::Criteria::Queryable::Extensions::BigDecimal::ClassMethods

Relationships & Source Files
Defined in: lib/mongoid/criteria/queryable/extensions/big_decimal.rb

Instance Method Summary

Instance Method Details

#evolve(object) ⇒ Object

Evolves the big decimal into a MongoDB friendly value.

Examples:

Evolve the big decimal

BigDecimal.evolve(decimal)

Parameters:

Returns:

  • (Object)

    The big decimal as a string, a Decimal128, or the inputted object if it is uncastable.

[ GitHub ]

  
# File 'lib/mongoid/criteria/queryable/extensions/big_decimal.rb', line 24

def evolve(object)
  __evolve__(object) do |obj|
    return if obj.nil?
    case obj
    when ::BigDecimal
      if Mongoid.map_big_decimal_to_decimal128
        BSON::Decimal128.new(obj)
      else
        obj.to_s
      end
    when BSON::Decimal128 then obj
    else
      if obj.numeric?
        if Mongoid.map_big_decimal_to_decimal128
          BSON::Decimal128.new(object.to_s)
        else
          obj.to_s
        end
      else
        obj
      end
    end
  end
end