Sha256: 53b6fcdc7b7a772a5f2db72dce1d43d374e6cdd0384571953a121aebd49f98b9

Contents?: true

Size: 1.34 KB

Versions: 7

Compression:

Stored size: 1.34 KB

Contents

# coding: utf-8

# from https://github.com/RubyMoney/money-rails/blob/master/lib/money-rails/mongoid/money.rb

class Money
  # Converts an object of this instance into a database friendly value.
  def mongoize
    {
        :cents => cents,
        :currency_iso => currency.iso_code
    }
  end

  class << self

    # Get the object as it was stored in the database, and instantiate
    # this custom class from it.
    def demongoize(object)
      if object.is_a?(Hash)
        object = object.symbolize_keys
        object.has_key?(:cents) ? ::Money.new(object[:cents], object[:currency_iso]) : nil
      else
        nil
      end
    end

    # Takes any possible object and converts it to how it would be
    # stored in the database.
    def mongoize(object)
      case
        when object.is_a?(Money) then object.mongoize
        when object.is_a?(Hash) then
          object.symbolize_keys! if object.respond_to?(:symbolize_keys!)
          ::Money.new(object[:cents], object[:currency_iso]).mongoize
        when object.respond_to?(:to_money) then
          object.to_money.mongoize
        else object
      end
    end

    # Converts the object that was supplied to a criteria and converts it
    # into a database friendly form.
    def evolve(object)
      case object
        when Money then object.mongoize
        else object
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
mongoid_money_field-4.0.8 lib/mongoid_money_field/field.rb
mongoid_money_field-4.0.7 lib/mongoid_money_field/field.rb
mongoid_money_field-4.0.6 lib/mongoid_money_field/field.rb
mongoid_money_field-4.0.5 lib/mongoid_money_field/field.rb
mongoid_money_field-4.0.4 lib/mongoid_money_field/field.rb
mongoid_money_field-4.0.3 lib/mongoid_money_field/field.rb
mongoid_money_field-4.0.2 lib/mongoid_money_field/field.rb