Clase: Mongoid::Attributes::Projector Privado
- Hereda:
-
Objeto
- Objeto
- Mongoid::Atributos::Proyector
- Definido en:
- lib/mongoid/attributes/projector.rb
Overview
Esta clase forma parte de una API privada. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.
Este módulo define ayudantes de proyección.
Las reglas de proyección no son triviales. Consulte www.mongodb.com/es/docs/manual/reference/method/db.collection.find/#find-projection para obtener la documentación del4.4 servidor. El servidor (y presumiblemente todos los anteriores) requiere que la proyección de los campos de contenido sea excluyente o inclusiva; es decir, no se pueden combinar exclusiones e inclusiones en la misma consulta. Sin embargo, _id sí se puede excluir en una proyección que incluya campos de contenido. Los valores de proyección enteros distintos 0 de y no 1 están documentados oficialmente al momento de escribir este artículo; consulte DOCSP-.15266 El4.4 servidor también permite la especificación de proyecciones hash anidadas, además de la notación de puntos, que supongo que Mongoid aún no gestiona.
Colapso delresumen de atributos de instancia
- #content_projection ⇒ Objeto solo lectura privada
- #id_projection_value ⇒ Objeto solo lectura privada
Colapso del resumen del método de instancia
-
#¿atributo_o_ruta_permitida?(nombre) ⇒ verdadero | falso
privada
Determinar si el atributo especificado, o una ruta de notación de puntos, está permitido por la proyección configurada, si la hay.
-
#inicializar (proyección) ⇒Proyector
constructor
privada
Una nueva instancia de Proyector.
Detalles del constructor
#inicializar (proyección)⇒ Proyector
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Devuelve una nueva instancia de Proyector.
24 25 26 27 28 29 30 31 32 33 |
# Archivo 'lib/mongoid/attributes/projector.rb', línea 24 def inicializar(proyección) Si proyección @proyección_de_contenido = proyección.dup @proyección_de_contenido.borrar('_id') @id_valor_de_proyección = proyección['_id'] else @proyección_de_contenido = nulo @id_valor_de_proyección = nulo end end |
Detalles de los atributos de instancia
#content_projection ⇒ objeto (solo lectura)
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
36 37 38 |
# Archivo 'lib/mongoid/attributes/projector.rb', línea 36 def proyección de contenido @proyección_de_contenido end |
#id_projection_value ⇒ Objeto (solo lectura)
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
35 36 37 |
# Archivo 'lib/mongoid/attributes/projector.rb', línea 35 def valor_de_proyección_id @id_valor_de_proyección end |
Detalles del método de instancia
#¿atributo_o_ruta_permitida?(nombre) ⇒ verdadero | falso
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Determinar si el atributo especificado, o una ruta de notación de puntos, está permitido por la proyección configurada, si la hay.
Si no hay ninguna proyección configurada, devuelve verdadero.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# Archivo 'lib/mongoid/attributes/projector.rb', línea 48 def attribute_or_path_allowed?(Nombre) # Manejo especial para _id. Si Nombre == '_id' resultado = a no ser que valor_de_proyección_id.nil? ¿valor_inclusivo?(valor_de_proyección_id) else true end return resultado end Si proyección de contenido.nil? # Sin proyección (a diferencia de una proyección vacía). # Se permiten todos los atributos. return true end # Busque un elemento que coincida o sea padre del nombre/ruta solicitados. # Esto maneja el caso cuando, por ejemplo, la proyección fue # {foo: true} y queremos saber si foo.bar está permitido. item, valor = proyección de contenido.detectar hacer |ruta, valor| (Nombre + '.').empezar_con?(ruta + '.') end Si item return ¿valor_inclusivo?(valor) end Si ¿contenido_inclusivo? # Busque un elemento que sea un hijo estricto del nombre/ruta solicitados. # Esto maneja el caso cuando, por ejemplo, la proyección fue # {"foo.bar" => true} y queremos saber si foo está permitido. # (Es como un contenedor de barras.) item, valor = proyección de contenido.detectar hacer |ruta, valor| (ruta + '.').empezar_con?(Nombre + '.') end Si item return true end end !¿contenido_inclusivo? end |