Sha256: 6bd4fabae49753c6c7eaa20d5d05d1468291f459be476866dc9eecae86dce680
Contents?: true
Size: 1.79 KB
Versions: 8
Compression:
Stored size: 1.79 KB
Contents
# frozen_string_literal: true 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. 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. def mongoize to_s end # Is the BigDecimal a number? # # @example Is the object a number?. # object.numeric? # # @return [ true ] Always true. def numeric? true 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 [ BigDecimal, nil ] A BigDecimal derived from the object or nil. def demongoize(object) object && object.numeric? ? BigDecimal(object.to_s) : nil end # Mongoize an object of any type to how it's stored in the db as a String. # # @example Mongoize the object. # BigDecimal.mongoize(123) # # @param [ Object ] object The object to Mongoize # # @return [ String, nil ] A String representing the object or nil. def mongoize(object) object && object.numeric? ? object.to_s : nil end end end end end ::BigDecimal.__send__(:include, Mongoid::Extensions::BigDecimal) ::BigDecimal.extend(Mongoid::Extensions::BigDecimal::ClassMethods)
Version data entries
8 entries across 8 versions & 1 rubygems