Sha256: da9a5b54739dca4bf5b6aac1beb2e7d3e9a1785d9565550c293ee859783c4d53

Contents?: true

Size: 938 Bytes

Versions: 2

Compression:

Stored size: 938 Bytes

Contents

module Mongoid
  module Contexts
    module Ids
      # Return documents based on an id search. Will handle if a single id has
      # been passed or mulitple ids.
      #
      # Example:
      #
      #   context.id_criteria([1, 2, 3])
      #
      # Returns:
      #
      # The single or multiple documents.
      def id_criteria(params)
        criteria.id(strings_to_object_ids(params))
        params.is_a?(Array) ? criteria.entries : one
      end

      protected

      # Convert ids from strings to +Mongo::ObjectID+s
      def strings_to_object_ids(ids)
        if Array === ids
          ids.map {|id| string_to_object_id(id) }
        else
          string_to_object_id(ids)
        end

      end

      # Convert ids from strings to +Mongo::ObjectID+s
      def string_to_object_id(id)
        if String === id
          ::Mongo::ObjectID.from_string(id)
        else
          id
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
mongo_doc-0.4.2 lib/mongo_doc/contexts/ids.rb
mongo_doc-0.4.1 lib/mongo_doc/contexts/ids.rb