Module: Mongoid::Criteria::Queryable::Extensions::Range

Defined in:
lib/mongoid/criteria/queryable/extensions/range.rb

Overview

Adds query type-casting behavior to Range class.

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#__array__Array

Get the range as an array.

Examples:

Get the range as an array.

1...3.__array__

Returns:

  • (Array)

    The range as an array.



18
19
20
# File 'lib/mongoid/criteria/queryable/extensions/range.rb', line 18

def __array__
  to_a
end

#__evolve_date__Hash

Convert the range to a $gte/$lte mongo friendly query for dates.

Examples:

Evolve the range.

(11231312..213123131).__evolve_date__

Returns:

  • (Hash)

    The $gte/$lte range query with times at UTC midnight.



28
29
30
# File 'lib/mongoid/criteria/queryable/extensions/range.rb', line 28

def __evolve_date__
  __evolve_range_naive__.transform_values! {|v| v&.__evolve_date__ }
end

#__evolve_range__(serializer: nil) ⇒ Hash

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Convert the range to a $gte/$lte mongo friendly query.

Examples:

Evolve the range.

(11231312..213123131).__evolve_range__

Parameters:

  • serializer (Object) (defaults to: nil)

    The optional serializer for the field.

Returns:

  • (Hash)

    The $gte/$lte range query.



52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/mongoid/criteria/queryable/extensions/range.rb', line 52

def __evolve_range__(serializer: nil)
  __evolve_range_naive__.transform_values! do |value|
    if serializer
      serializer.evolve(value)
    else
      case value
      when Time, DateTime then value.__evolve_time__
      when Date then value.__evolve_date__
      else value
      end
    end
  end
end

#__evolve_time__Hash

Convert the range to a $gte/$lte mongo friendly query for times.

Examples:

Evolve the range.

(11231312..213123131).__evolve_date__

Returns:

  • (Hash)

    The $gte/$lte range query with times in UTC.



38
39
40
# File 'lib/mongoid/criteria/queryable/extensions/range.rb', line 38

def __evolve_time__
  __evolve_range_naive__.transform_values! {|v| v&.__evolve_time__ }
end