lib/money-rails/mongoid/money.rb in money-rails-1.13.0 vs lib/money-rails/mongoid/money.rb in money-rails-1.13.1

- old
+ new

@@ -26,36 +26,45 @@ 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 - if object.respond_to?(:deep_symbolize_keys!) - object.deep_symbolize_keys! - elsif object.respond_to?(:symbolize_keys!) - object.symbolize_keys! - end - ::Money.new(object[:cents], object[:currency_iso]).mongoize - when object.nil? then nil - when object.respond_to?(:to_money) then - begin - object.to_money.mongoize - rescue Money::Currency::UnknownCurrency, Monetize::ParseError => e - raise MoneyRails::Error, e.message if MoneyRails.raise_error_on_money_parsing - nil - end - else object - end + return object.mongoize if object.is_a?(Money) + return mongoize_hash(object) if object.is_a?(Hash) + return nil if object.nil? + return mongoize_castable(object) if object.respond_to?(:to_money) + + object 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 + + private + + def mongoize_hash(hash) + if hash.respond_to?(:deep_symbolize_keys!) + hash.deep_symbolize_keys! + elsif hash.respond_to?(:symbolize_keys!) + hash.symbolize_keys! + end + + # Guard for a blank form + return nil if hash[:cents] == '' && hash[:currency_iso] == '' + + ::Money.new(hash[:cents], hash[:currency_iso]).mongoize + end + + def mongoize_castable(object) + object.to_money.mongoize + rescue Money::Currency::UnknownCurrency, Monetize::ParseError => e + return nil unless MoneyRails.raise_error_on_money_parsing + raise MoneyRails::Error, e.message end end end