Class: Gizmo::Find

Inherits:
BaseOperation show all
Defined in:
lib/gizmo/find.rb

Instance Attribute Summary

Attributes inherited from BaseOperation

#context

Instance Method Summary collapse

Methods inherited from BaseOperation

#create_response, #default_status, #initialize, #set_response_headers

Constructor Details

This class inherits a constructor from Gizmo::BaseOperation

Instance Method Details

#call(criteria, id = nil) ⇒ Gizmo::Response

Find a single item using the provided criteria.

Parameters:

  • criteria (Mongoid::Criteria)

    the criteria to use for finding a single item

  • id (String, Moped::BSON::ObjectId) (defaults to: nil)

    the ID of the item being found

Returns:

Raises:

  • (Mongoid::Errors::DocumentNotFound)


10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/gizmo/find.rb', line 10

def call(criteria, id=nil)
  response = create_response
  if criteria.is_a? Mongoid::Criteria
    response.data = criteria.where(:id=>id).first
  elsif !criteria.respond_to?(:find) && id.nil?
    response.data = criteria
  else
    response.data = criteria.find id
  end
  raise Mongoid::Errors::DocumentNotFound.new(criteria.klass, :id=>id) if response.data.nil?
  response
end