lib/mongoid/extensions/big_decimal.rb
# encoding: utf-8
module Mongoid
module Extensions
module BigDecimal
# Convert the big decimal to an $inc-able value.
#
# @example Convert the big decimal.
# bd.__to_inc__
#
# @return [ Float ] The big decimal as a float.
#
# @since 3.0.3
def __to_inc__
to_f
end
# Turn the object from the ruby type we deal with to a Mongo friendly
# type.
#
# @example Mongoize the object.
# object.mongoize
#
# @return [ Object ] The object.
#
# @since 3.0.0
def mongoize
to_s
end
module ClassMethods
# Convert the object from its mongo friendly ruby type to this type.
#
# @example Demongoize the object.
# Object.demongoize(object)
#
# @param [ Object ] object The object to demongoize.
#
# @return [ Object ] The object.
#
# @since 3.0.0
def demongoize(object)
if object
object.numeric? ? ::BigDecimal.new(object.to_s) : object
end
end
# Mongoize an object of any type to how it's stored in the db as a big
# decimal.
#
# @example Mongoize the object.
# BigDecimal.mongoize(123)
#
# @param [ Object ] object The object to Mongoize
#
# @return [ String ] The mongoized object.
#
# @since 3.0.7
def mongoize(object)
object ? object.to_s : object
end
end
end
end
end
::BigDecimal.__send__(:include, Mongoid::Extensions::BigDecimal)
::BigDecimal.extend(Mongoid::Extensions::BigDecimal::ClassMethods)