Class: MongoMapper::FinderOptions

Inherits:
Object
  • Object
show all
Defined in:
lib/mongo_mapper/finder_options.rb

Constant Summary collapse

OptionKeys =
[:fields, :select, :skip, :offset, :limit, :sort, :order]

Instance Method Summary collapse

Constructor Details

#initialize(model, options) ⇒ FinderOptions

Returns a new instance of FinderOptions.

Raises:

  • (ArgumentError)


25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/mongo_mapper/finder_options.rb', line 25

def initialize(model, options)
  raise ArgumentError, "Options must be a hash" unless options.is_a?(Hash)
  options.symbolize_keys!
  
  @model      = model
  @options    = {}
  @conditions = options.delete(:conditions) || {}

  options.each_pair do |key, value|
    if OptionKeys.include?(key)
      @options[key] = value
    else
      @conditions[key] = value
    end
  end

  add_sci_scope
end

Instance Method Details

#criteriaHash

Returns Mongo compatible criteria options.

Returns:

  • (Hash)

    Mongo compatible criteria options

See Also:

  • #to_mongo_criteria


47
48
49
# File 'lib/mongo_mapper/finder_options.rb', line 47

def criteria
  to_mongo_criteria(@conditions)
end

#optionsHash

Returns Mongo compatible options.

Returns:

  • (Hash)

    Mongo compatible options



52
53
54
55
56
57
58
59
60
61
# File 'lib/mongo_mapper/finder_options.rb', line 52

def options
  options = @options.dup

  fields = options.delete(:fields) || options.delete(:select)
  skip   = options.delete(:skip)   || options.delete(:offset) || 0
  limit  = options.delete(:limit)  || 0
  sort   = options.delete(:sort)   || convert_order_to_sort(options.delete(:order))

  {:fields => to_mongo_fields(fields), :skip => skip.to_i, :limit => limit.to_i, :sort => sort}
end

#to_aArray<Hash>

Returns Mongo criteria and options enclosed in an Array.

Returns:

  • (Array<Hash>)

    Mongo criteria and options enclosed in an Array



64
65
66
# File 'lib/mongo_mapper/finder_options.rb', line 64

def to_a
  [criteria, options]
end