Classe: Mongoid::Association::Embedded::EmbedsMany::Proxy
- Herda:
- Muitos mostrar tudo
- Estendido por:
- Métodos de classe
- Inclui:
- Lotable
- Definido em:
- lib/mongoid/association/embedded/embeds_many/proxy.rb
Visão geral
Proxy transparente para associações embeds_many. Uma instância dessa classe é retornada ao chamar o método de getter de associação no documento pai. Esta classe herda de Mongoid::Association::Proxy e encaminha a maioria de seus métodos para o destino da associação, ou seja, a array de documentos filhos.
Definido sob namespace
Módulos: Métodos de classe
Resumo constante
Constantes herdadas do Proxy
Resumo do atributo de instância
Atributos herdados do proxy
#_association, #_base, #_target
Recolhimento do Resumo do método de instância
-
#<<(*args) ➤ Objeto (também: #push)
Anexa um documento ou array de documentos à associação.
-
#_remove(documento) ➤ Objeto
privado
Remove um único documento da coleção *somente na memória*.
-
#as_document ➤ Array<Hash>
Obtenha esta associação como sua representação no banco de dados.
-
#build(attributes = {}, type = nil) ➤ Document (também: #new)
Cria um novo documento na associação e o anexa ao destino.
-
#clear → self
Limpe a associação.
-
#concat(Docs) ➤ Array<Document>
Anexa uma array de documentos à associação.
-
#count(*args, &block) ⇒ Integer
Retorna uma contagem do número de documentos na associação que realmente foram persistentes no banco de banco de dados.
-
#delete(documento) ➤ Documento | nil (também: #delete_one)
Exclua o documento fornecido do destino.
-
#delete_all(condição = {}) ➤ Inteiro
Exclua todos os documentos da associação sem executar chamadas de resposta.
-
#delete_if ➤ EmbedsMany::Proxy | Enumerador
Exclua todos os documentos para os quais o bloqueio fornecido retorna verdadeiro.
-
#Destruir_all(condição = {}) ➤ Inteiro
Destrua todos os documentos na associação enquanto executa callbacks.
-
#existe?(id_or_ conditions = :none) ➤ true | false
Determine se algum documento nesta associação existe no banco de dados.
-
#find {|Object| ... } ⇒ Document | Array<Document> | nil
Encontra um documento nesta associação por meio de vários métodos diferentes.
-
#inicializar(base, destino, associação) ➤ Muitos
construtor
Crie uma instância de uma nova associação embeds_many.
-
#pop(count = nil) ➤ Documento | Array<Document> | nada
Remova documentos da associação.
-
#shift(count = nil) ➤ Documento | Array<Document> | nada
Remova documentos da associação.
-
#replace(Docs) ➤ Muitos
Substitui os documentos de destino fornecidos pelos documentos existentes na relação.
-
#sem escopo ➤ Critérios
Retorne a associação com todos os escopos anteriores removidos.
Métodos incluídos do ClassMethods
missing_loader, incorporado?, foreign_key_suffix
Métodos incluídos no Lote
#batch_clear, #batch_insert, #batch_remove, #batch_replace
Métodos incluídos no Posicional
Métodos herdados de Muitos
#em branco?, #create, #create!, #find_or_create_by, #find_or_create_by!, #find_or_initialize_by, #nil?, #respond_to?, #scoped, #serializable_hash
Métodos herdados do Proxy
apply_ordering, #extend_proxies, #klass, #reset_unloaded, #substitutable
Métodos incluídos noMarshable
Detalhes do construtor
#inicializar(base, destino, associação) ➤ Muitos
Crie uma instância de uma nova associação embeds_many.
67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 67 def inicializar(base, Alvo, associação) super fazer _target.cada_com_index fazer |doc, index| integrar(doc) doc._index = index end update_attributes_hash @_unscoped = _target.dup @_target = escopo(_target) end end |
Manipulação de métodos dinâmicos
Esta classe lida com métodos dinâmicos através do método method_missing
#method_missing ➤ Critérios | Objeto (privado)
Se a array de destino não responder ao método fornecido, tente encontrar um escopo nomeado ou critérios na classe e envie a chamada para lá.
Se o método existir na array, use o comportamento de proxy padrão.
TODO: verificar se estamos usando consistentemente respond_to_missing
anywhere we define method_missing.
rubocop:disable Estilo/MissingRespondToMissing
490 491 492 493 494 495 496 |
# File 'lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 490 ruby2_keywords def method_missing(name, *Args, &noum: bloco ; verb: bloquear) Método super se _target.respond_to?(name) classe.enviar(:with_scope, critério) fazer critério.public_send(name, *Args, &noum: bloco ; verb: bloquear) end end |
Detalhes do método de instância
#<<(*args) ➤ Objeto Também conhecido como: push
Anexa um documento ou array de documentos à associação. Definirá o principal e atualizará o índice no processo.
89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 89 def <<(*Args) Docs = Args.achatar Método a menos que Docs.algum? Método concat(Docs) se Docs.Tamanho > 1 Docs.primeiro.toque fazer |doc| acrescentar(doc) doc.Salvar se persistente? && !_assigning? end auto end |
#_remove(document) ➤ Objeto
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.
Remove um único documento da coleção *somente na memória*. Ela não persistirá a alteração.
236 237 238 239 240 241 |
# File 'lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 236 def _remove(documento) _target.delete_one(documento) _unscoped.delete_one(documento) update_attributes_hash reIndexar end |
#as_document ➤ Array<Hash>
Obtenha esta associação como sua representação no banco de dados.
110 111 112 |
# File 'lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 110 def as_document as_attributes.coletar { |attrs| BSON::Documento.Novo(attrs) } end |
#build(attributes = {}, type = nil) ⇒ Document Também conhecido como: novo
Cria um novo documento na associação e o anexa ao destino. Aceita um tipo opcional se você quiser especificar uma subclasse.
138 139 140 141 142 143 144 145 146 147 |
# File 'lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 138 def COMPILAR(attributes = {}, type = nada) Factory.execute_build(type || _association.classe, attributes, execute_callbacks: false).toque fazer |doc| acrescentar(doc) doc.apply_post_processed_defaults rendimento doc se block_given? doc.run_pending_callbacks doc.run_callbacks(:build) { doc } _base._reset_memoized_descendentes! end end |
#clear → self
Limpe a associação. Excluirá os documentos do banco de dados se eles já forem persistentes.
Se o documento do host não for persistente, mas seu _id corresponder a um documento persistente, chamar #clear em uma associação removerá os documentos da associação do banco de dados, mesmo que o conjunto de documentos no aplicativo (conforme carregado no host) seja diferente do que é no banco de dados, e o host também não pode conter nenhum documento persistente na associação.
165 166 167 168 169 |
# File 'lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 165 def Limpar batch_clear(_target.dup) update_attributes_hash auto end |
#concat(Docs) ➤ Array<Document>
Anexa uma array de documentos à associação. Executa uma inserção em lote dos documentos em vez de persistir um de cada vez.
123 124 125 126 |
# File 'lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 123 def concat(Docs) batch_insert(Docs) a menos que Docs.vazio? auto end |
#count(*args, &block) ⇒ Integer
Retorna uma contagem do número de documentos na associação que realmente foram persistentes no banco de banco de dados.
Use #size se quiser o número total de documentos.
Se argumentos ou bloqueio estiverem presentes, #count delegará para o método #count em target
e incluirá documentos persistentes e não persistentes.
193 194 195 196 197 |
# File 'lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 193 def contar(*Args, &noum: bloco ; verb: bloquear) Método _target.contar(*Args, &noum: bloco ; verb: bloquear) se Args.algum? || noum: bloco ; verb: bloquear _target.contar(&:persistiu?) end |
#excluir(documento) ➤ Documento | nil Também conhecido como: delete_one
Exclua o documento fornecido do destino. Este método é proxy para reindexar a array após a ocorrência da operação.
208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 |
# File 'lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 208 def excluir(documento) execute_callbacks_round(:remove, documento) fazer _target.delete_one(documento).toque fazer |doc| se doc && !_binding? _unscoped.delete_one(doc) se _assigning? _base.add_atomic_pull(doc) mais doc.excluir(suprimir: true) unbind_one(doc) end update_attributes_hash end reIndexar end end end |
#delete_all(condição = {}) ➤ Inteiro
Exclua todos os documentos da associação sem executar chamadas de resposta.
254 255 256 |
# File 'lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 254 def delete_all(condições = {}) remove_all(condições, :delete) end |
#delete_if ➤ EmbedsMany::Proxy | Enumerador
Exclua todos os documentos para os quais o bloqueio fornecido retorna verdadeiro.
267 268 269 270 271 272 273 |
# File 'lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 267 def delete_if Método super a menos que block_given? _target.dup.cada { |doc| excluir(doc) se rendimento doc } auto end |
#Destruir_all(condição = {}) ➤ Inteiro
Destrua todos os documentos na associação enquanto executa callbacks.
286 287 288 |
# File 'lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 286 def Destruir_all(condições = {}) remove_all(condições, :destroy) end |
#existe?(id_or_ conditions = :none) ➤ true | false
Determine se algum documento nesta associação existe no banco de dados.
306 307 308 309 310 311 312 313 |
# File 'lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 306 def existe?(id_or_ conditions = : none) caso id_or_ conditions quando : none então _target.algum?(&:persistiu?) quando nada, false então false quando Hash então ONDE(id_or_ conditions).algum?(&:persistiu?) mais ONDE(_id: id_or_ conditions).algum?(&:persistiu?) end end |
#find {|Object| ... } ⇒ Document | Array<Document> | nil
Encontra um documento nesta associação por meio de vários métodos diferentes.
Este método delega para Mongoid::Criteria#find. Se este método não receber um bloqueio, ele retornará um ou vários documentos para os valores de _id fornecidos.
Se esse método receber um bloco, ele retornará o primeiro documento daqueles encontrados pelo objeto Criteria atual para o qual o bloco retornará um valor verdadeiro.
340 341 342 |
# File 'lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 340 def find(...) critério.find(...) end |
#pop(count = nil) ⇒ Document | Array<Document> | nil
Remova documentos da associação. Pode ser um único documento ou vários, e persistirá automaticamente as alterações.
365 366 367 368 369 370 |
# File 'lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 365 def Pop(contar = nada) Método [] se contar&.zero? Docs = _target.último(contar || 1).cada { |doc| excluir(doc) } (contar.nada? || Docs.vazio?) ? Docs.primeiro : Docs end |
#shift(count = nil) ⇒ Document | Array<Document> | nil
Remova documentos da associação. Pode ser um único documento ou vários, e persistirá automaticamente as alterações.
385 386 387 388 389 390 |
# File 'lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 385 def mudança(contar = nada) Método [] se contar&.zero? Docs = _target.primeiro(contar || 1).cada { |doc| excluir(doc) } (contar.nada? || Docs.vazio?) ? Docs.primeiro : Docs end |
#replace(Docs) ➤ Muitos
Substitui os documentos de destino fornecidos pelos documentos existentes na relação.
401 402 403 404 405 |
# File 'lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 401 def substituir(Docs) batch_replace(Docs) update_attributes_hash auto end |
#sem escopo ➤ Critérios
Retorne a associação com todos os escopos anteriores removidos. Esta é a representação exata dos Docs no banco de banco de dados.
414 415 416 417 418 419 |
# File 'lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 414 def sem escopo criterion = classe.sem escopo criterion. = true criterion.documentos = _unscoped.delete_if(&:marked_for_destruction?) criterion end |