123456789_123456789_123456789_123456789_123456789_

Module: Mongoid::Extensions::Range::ClassMethods

Relationships & Source Files
Defined in: lib/mongoid/extensions/range.rb

Instance Method Summary

Instance Method Details

#__mongoize_hash__(object) (private)

[ GitHub ]

  
# File 'lib/mongoid/extensions/range.rb', line 90

def __mongoize_hash__(object)
  hash = object.stringify_keys
  hash.slice!('min', 'max', 'exclude_end')
  hash.compact!
  hash.transform_values!(&:mongoize)
  hash.blank? ? nil : hash
end

#__mongoize_range__(object) (private)

[ GitHub ]

  
# File 'lib/mongoid/extensions/range.rb', line 98

def __mongoize_range__(object)
  hash = {}
  hash['min'] = object.begin.mongoize if object.begin
  hash['max'] = object.end.mongoize if object.end
  hash['exclude_end'] = true if object.respond_to?(:exclude_end?) && object.exclude_end?
  hash
end

#demongoize(object) ⇒ Range | nil

Convert the object from its mongo friendly ruby type to this type.

Examples:

Demongoize the object.

Range.demongoize({ "min" => 1, "max" => 5 })

Parameters:

  • object (Hash)

    The object to demongoize.

Returns:

  • (Range | nil)

    The range, or nil if object cannot be represented as range.

[ GitHub ]

  
# File 'lib/mongoid/extensions/range.rb', line 53

def demongoize(object)
  return if object.nil?

  return unless object.is_a?(Hash)

  hash = object.slice('min', 'max', 'exclude_end', :min, :max, :exclude_end)
  return if hash.blank?

  begin
    ::Range.new(hash['min'] || hash[:min],
                hash['max'] || hash[:max],
                hash['exclude_end'] || hash[:exclude_end])
  rescue ArgumentError
    nil
  end
end

#mongoize(object) ⇒ Hash | nil

Turn the object from the ruby type we deal with to a Mongo friendly type.

Examples:

Mongoize the object.

Range.mongoize(1..3)

Parameters:

  • object (Object)

    The object to mongoize.

Returns:

  • (Hash | nil)

    The object mongoized or nil.

[ GitHub ]

  
# File 'lib/mongoid/extensions/range.rb', line 79

def mongoize(object)
  return if object.nil?

  case object
  when Hash then __mongoize_hash__(object)
  when Range then __mongoize_range__(object)
  end
end