Módulo: Mongoid::Findable
- Ampliado por:
- Reenviable
- Definido en:
- lib/mongoid/findable.rb
Overview
Este módulo define los métodos de búsqueda que se asocian al documento a nivel de clase.
Resumen del método de instancia colapsar
-
#¿vacío? ⇒ true | false
Devuelve verdadero si el recuento es cero.
-
#estimated_count ⇒ Entero
Devuelve un recuento estimado de registros en la base de datos.
-
#¿exists?(id_or_conditions = :none) ⇒ true | false
Devuelve verdadero si hay algún documento en la base de datos según los argumentos proporcionados.
-
# find(*args, &block) ⇒ documento |arreglo<Document> | nil
Encuentra un
Documento varios documentos por sus valores de _id. -
#find_by(attrs = {}) {|resultado|... } ⇒ Documento | nulo
Encuentra el primer
Documentdadas las condiciones. -
#find_by!(attrs = {}) {|resultado|... } ⇒ Documento
Encuentra el primer
Documentdadas las condiciones, o genera Mongoid::Errors::DocumentNotFound. -
#primero(límite = nil) ⇒ Documento (también: #uno)
Encuentra el primer
Documentdadas las condiciones. -
#last(limit = nil) ⇒ Document
Encuentra el último
Documentdadas las condiciones.
Detalles del método de instancia
#empty? ⇒ true | false
Devuelve verdadero si el recuento es cero
94 95 96 |
# Archivo 'lib/mongoid/findable.rb', línea 94 def ¿vacío? count == 0 end |
#estimated_count ⇒ Entero
Devuelve un recuento estimado de registros en la base de datos.
84 85 86 |
# Archivo 'lib/mongoid/findable.rb', línea 84 def recuento estimado con_ámbito_predeterminado.recuento estimado end |
#¿exists?(id_or_conditions = :none) ⇒ true | false
Devuelve verdadero si hay algún documento en la base de datos según los argumentos proporcionados.
115 116 117 |
# Archivo 'lib/mongoid/findable.rb', línea 115 def ¿existe?(id_or_conditions = :ninguno) con_ámbito_predeterminado.¿existe?(id_or_conditions) end |
#find(*args, &block) ⇒ Document | Array<Document> | nil
Cada argumento puede ser un ID individual, un arreglo de IDs o un arreglo anidado. Cada arreglo se aplanará.
Encuentra un Document o varios documentos por sus valores de _id.
Si se proporciona un solo argumento que no es un arreglo, este argumento se interpreta como el valor _id del documento que se busca. Si existe un documento que coincida en la base de datos, este documento se devuelve; de lo contrario, si la opción de configuración de Mongoid raise_not_found_error es verdadera (que es la opción por defecto), se lanza Errors::DocumentNotFound, y si raise_not_found_error es falsa, find devuelve nil.
Si se dan múltiples argumentos, o si se da un argumento tipo arreglo, se aplana el arreglo y se interpreta cada elemento del arreglo como el valor de _id del documento que se debe buscar. Mongoid luego intenta recuperar todos los documentos con los valores de _id proporcionados. El valor devuelto es un arreglo de Documentos encontrados. Cada documento aparece una vez en el arreglo devuelto, incluso si su _id se proporciona varias veces en el argumento de find. Si la opción de configuración raise_not_found_error Mongoid es verdadera, Errors::DocumentNotFound se generará una excepción si alguno de los _ids especificados no se encuentra en la base de datos. Si la opción de configuración de Mongoid raise_not_found_error es falsa, solo se devuelven aquellos documentos que se encuentran; si no se encuentra ningún documento, el valor de retorno es un arreglo vacío.
Ten en cuenta que MongoDB no permite que el campo _id sea un arreglo.
El argumento se somete a las conversiones habituales de tipo Mongoid según el tipo declarado para el campo _id. Por defecto, el campo _id es un BSON::ObjectId; esto permite que las cadenas se pasen a find y las cadenas se convertirán de forma transparente en instancias de BSON::ObjectId durante la construcción de consultas.
Si se proporciona un bloque a este método, delega a Enumerable#find y devuelve el primer documento encontrado por el objeto Crieria actual para el cual el bloque devuelve un valor verdadero. Si se proporcionan tanto un bloque como identificadores, el bloque se ignora y se devuelven los documentos con los identificadores especificados. Si se proporcionan un bloque y un procedimiento, el método delega a Enumerable#find y usa el procedimiento como predeterminado.
El método find tiene en cuenta el ámbito por defecto definido en la clase del modelo, si existe.
168 169 170 171 172 173 174 175 |
# Archivo 'lib/mongoid/findable.rb', línea 168 def buscar(*args, Ybloque) empty_or_proc = args.¿vacío? || (args.longitud == 1 && args.primero.is_a?(Proc)) si ¿block_given? && empty_or_proc con_ámbito_predeterminado.buscar(*args, Ybloque) else con_ámbito_predeterminado.buscar(*args) end end |
#find_by(attrs = {}) {|result| ... } ⇒ documento | nil
Encuentra el primer Document dado las condiciones. Si no se encuentra un documento coincidente y Mongoid.raise_not_found_error es verdadero, arroja Mongoid::Errors::DocumentNotFound y devuelve nulo nil de otra manera.
y Mongoid.raise_not_found_error es verdadero.
191 192 193 194 195 196 197 198 |
# Archivo 'lib/mongoid/findable.rb', línea 191 def buscar_por(attrs = {}) Resultado = dónde(attrs).encontrar_primero si Resultado.nil? && Mongoid.raise_not_found_error propagar(Errors::Documento no encontrado.Nuevo(sí mismo, attrs)) end rendimiento(Resultado) si Resultado && ¿block_given? Resultado end |
#find_by!(attrs = {}) {|resultado|... } ⇒ Documento
Encuentra el primer Document dadas las condiciones, o genera Mongoid::Errors::DocumentNotFound
211 212 213 214 215 216 |
# Archivo 'lib/mongoid/findable.rb', línea 211 def find_by!(attrs = {}) Resultado = dónde(attrs).encontrar_primero propagar(Errors::Documento no encontrado.Nuevo(sí mismo, attrs)) a menos que Resultado rendimiento(Resultado) si Resultado && ¿block_given? Resultado end |
#first(limite = nil) ⇒ Documento también conocido como: uno
Encuentra el primer Document dadas las condiciones.
226 227 228 |
# Archivo 'lib/mongoid/findable.rb', línea 226 def primero(limit = nulo) con_ámbito_predeterminado.primero(limit) end |
#last(limit = nil) ⇒ Document
Encuentra el último Document dadas las condiciones.
239 240 241 |
# Archivo 'lib/mongoid/findable.rb', línea 239 def último(limit = nulo) con_ámbito_predeterminado.último(limit) end |