Module: Mongoid::Findable
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
Forwardable
|
|
Defined in: | lib/mongoid/findable.rb |
Overview
This module defines the finder methods that hang off the document at the class level.
Instance Attribute Summary
-
#empty? ⇒ true | false
readonly
Returns true if count is zero.
Instance Method Summary
-
#estimated_count ⇒ Integer
Returns an estimated count of records in the database.
-
#exists?(id_or_conditions = :none) ⇒ true | false
Returns true if there are on document in database based on the provided arguments.
-
#find(*args, &block) ⇒ Document | Array<Document> | nil
Finds a
Document
or multiple documents by their _id values. -
#find_by(attrs = {}) {|result| ... } ⇒ Document | nil
Find the first
Document
given the conditions. -
#find_by!(attrs = {}) {|result| ... } ⇒ Document
Find the first
Document
given the conditions, or raises Mongoid::Errors::DocumentNotFound. -
#first(limit = nil) ⇒ Document
(also: #one)
Find the first
Document
given the conditions. -
#last(limit = nil) ⇒ Document
Find the last
Document
given the conditions. -
#one(limit = nil)
Alias for #first.
Instance Attribute Details
#empty? ⇒ true
| false
(readonly)
Returns true if count is zero
# File 'lib/mongoid/findable.rb', line 95
def empty? count == 0 end
Instance Method Details
#estimated_count ⇒ Integer
Returns an estimated count of records in the database.
# File 'lib/mongoid/findable.rb', line 85
def estimated_count with_default_scope.estimated_count end
#exists?(id_or_conditions = :none) ⇒ true
| false
Returns true if there are on document in database based on the provided arguments.
# File 'lib/mongoid/findable.rb', line 116
def exists?(id_or_conditions = :none) with_default_scope.exists?(id_or_conditions) end
#find(*args, &block) ⇒ Document | Array<Document> | nil
Each argument can be an individual id, an array of ids or a nested array. Each array will be flattened.
Finds a Document
or multiple documents by their _id values.
If a single non-Array argument is given, this argument is interpreted as the _id value of a document to find. If there is a matching document in the database, this document is returned; otherwise, if the raise_not_found_error
::Mongoid
configuration option is truthy (which is the default), Errors::DocumentNotFound
is raised, and if raise_not_found_error
is falsy, find
returns nil
.
If multiple arguments are given, or an ::Array
argument is given, the array is flattened and each array element is interpreted as the _id value of the document to find. ::Mongoid
then attempts to retrieve all documents with the provided _id values. The return value is an array of found documents. Each document appears one time in the returned array, even if its _id is given multiple times in the argument to find
. If the raise_not_found_error
::Mongoid
configuration option is truthy, Errors::DocumentNotFound
exception is raised if any of the specified _ids were not found in the database. If the raise_not_found_error
::Mongoid
configuration option is falsy, only those documents which are found are returned; if no documents are found, the return value is an empty array.
Note that MongoDB does not allow the _id field to be an array.
The argument undergoes customary ::Mongoid
type conversions based on the type declared for the _id field. By default the _id field is a BSON::ObjectId
; this allows strings to be passed to find
and the strings will be transparently converted to ::BSON::ObjectId
instances during query construction.
If this method is given a block, it delegates to Enumerable#find
and returns the first document of those found by the current Crieria object for which the block returns a truthy value. If both a block and ids are given, the block is ignored and the documents for the given ids are returned. If a block and a Proc are given, the method delegates to Enumerable#find
and uses the proc as the default.
The find
method takes into account the default scope defined on the model class, if any.
#find_by(attrs = {}) {|result| ... } ⇒ Document | nil
# File 'lib/mongoid/findable.rb', line 192
def find_by(attrs = {}) result = where(attrs).find_first if result.nil? && Mongoid.raise_not_found_error raise(Errors::DocumentNotFound.new(self, attrs)) end yield(result) if result && block_given? result end
#find_by!(attrs = {}) {|result| ... } ⇒ Document
Find the first Document
given the conditions, or raises Mongoid::Errors::DocumentNotFound
# File 'lib/mongoid/findable.rb', line 212
def find_by!(attrs = {}) result = where(attrs).find_first raise(Errors::DocumentNotFound.new(self, attrs)) unless result yield(result) if result && block_given? result end
#first(limit = nil) ⇒ Document Also known as: #one
Find the first Document
given the conditions.
# File 'lib/mongoid/findable.rb', line 227
def first(limit = nil) with_default_scope.first(limit) end
#last(limit = nil) ⇒ Document
Find the last Document
given the conditions.
# File 'lib/mongoid/findable.rb', line 240
def last(limit = nil) with_default_scope.last(limit) end
#one(limit = nil)
Alias for #first.
# File 'lib/mongoid/findable.rb', line 230
alias :one :first