Classe: Mongoid::Attributes::Projetor Privado
- Herda:
-
Objeto
- Objeto
- Mongoid::Attributes::Projetor
- Definido em:
- lib/mongoid/attributes/projector.rb
Visão geral
Esta classe faz parte de uma API privada. Evite usar essa classe, se possível, pois ela pode ser removida ou alterada no futuro.
Este módulo define os auxiliares de projeção.
As regras de projeção não são triviais. Consulte Www.mongodb.com/pt-br/docs/manual/reference/method/db.collection.find/#find-projection para obter a documentação do servidor . O servidor 4.4 (e presumivelmente todos os mais antigos) exige que uma projeção para campos de conteúdo seja de exclusão ou de inclusão, ou seja, não é possível misturar exclusões e inclusões na mesma query. No entanto, _id pode ser excluído em uma projeção que inclui campos de conteúdo. Valores de projeção inteiros diferentes de 0 e 1 não estão oficialmente documentados no momento em que este documento foi escrito; consulte DOCSP-15266. O servidor 4.4 também permite a especificação de projeção de hash aninhado, além da notação de ponto, com a qual presumi que o Mongoid ainda não lida.
Recolhimento do Resumo do atributo de instância
- #conteúdo_projeção ➤ Objeto Somente leitura privado
- #id_projection_value ➤ Objeto Somente leitura privado
Recolhimento do Resumo do método de instância
-
#atributo_or_path_allowed?(nome) ➤ verdadeiro | false
privado
Determine se o atributo especificado, ou um caminho de notação de ponto , é permitido pela projeção configurada, se houver.
-
#initialize(projeção) ➤ Projetor
construtor
privado
Uma nova instância do Projetor.
Detalhes do construtor
#initialize(projeção) ➤ Projetor
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Retorna uma nova instância do Projetor.
24 25 26 27 28 29 30 31 32 33 |
# Arquivo 'lib/mongoid/attributes/projector.rb', linha 24 def inicializar(projeção) se projeção @content_projection = projeção.dup @content_projection.excluir('_id') @id_projection_value = projeção['_id'] mais @content_projection = nada @id_projection_value = nada end end |
Detalhes do atributo da instância
#conteúdo_projeção ➤ Objeto (somente leitura)
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
36 37 38 |
# Arquivo 'lib/mongoid/attributes/projector.rb', linha 36 def conteúdo_projeção @content_projection end |
#id_projection_value ➤ Objeto (somente leitura)
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
35 36 37 |
# Arquivo 'lib/mongoid/attributes/projector.rb', linha 35 def id_projection_value @id_projection_value end |
Detalhes do método de instância
#atributo_or_path_allowed?(nome) ➤ verdadeiro | false
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Determine se o atributo especificado, ou um caminho de notação de ponto , é permitido pela projeção configurada, se houver.
Se não houver nenhuma projeção configurada , retorna verdadeiro.
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 |
# Arquivo 'lib/mongoid/attributes/projector.rb', linha 48 def Atributo_or_path_allowed?(name) # Manuseio especial para _id. se name == '_id' Resultado = a menos que id_projection_value.nada? value_inclusionary?(id_projection_value) mais true end Método Resultado end se conteúdo_projeção.nada? # Sem projeção (em oposição a uma projeção vazia). # Todos os atributos são permitidos. Método true end # Encontre um item que corresponda ou seja pai do nome/caminhos solicitado. # Isso lida com o caso quando, por exemplo, a projeção foi # {foo: true} e queremos saber sefoo.bar é permitido. item, valor = conteúdo_projeção.detectar fazer |caminho, valor| (name + '.').start_with?(caminho + '.') end se item Método value_inclusionary?(valor) end se Content_inclusionary? # Encontre um item que seria um filho estrito do nome/caminhos solicitados. # Isso lida com o caso quando, por exemplo, a projeção foi # {"foo.bar" => true} e queremos saber sefoo é permitido. # ( É como um contêiner de barras .) item, valor = conteúdo_projeção.detectar fazer |caminho, valor| (caminho + '.').start_with?(name + '.') end se item Método true end end !Content_inclusionary? end |