Classe: Mongoid::Association::Embedded::EmbedsMany::Proxy
- Herda:
- Muitos mostrar tudo
- Inclui:
- Lotable
- Definido em:
- build/mongoid-8.1/lib/mongoid/association/embedded/embeds_many/proxy.rb
Resumo do atributo de instância
Atributos herdados do proxy
#_association, #_base, #_target
Recolhimento do Resumo do método de classe
-
.incorporado? ➤ verdadeiro
Retorna verdadeiro se a associação for incorporada.
-
.foreign_key_suffix ➤ nil
Retorna o sufixo do campo de chave estrangeira, "_id" ou "_ids".
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(atributos = {}, tipo = nil) {|doc| ... } ➤ Documento (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 ➤ Muitos | 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? ➤ verdadeiro | false
Determine se algum documento nesta associação existe no banco de dados.
-
#find(*args, &block) ➤ Documento | Array<Document> | nada
Encontra um documento nesta associação por meio de vários métodos diferentes.
-
#in_memory ➤ Array<Document>
Obtenha todos os documentos da associação que estão carregados na memória.
-
#inicializar(base, destino, associação) ➤ Muitos
construtor
Crie uma instância de uma nova associação embeds_many.
-
#pop(count = nil) ➤ Documento | Array<Document>
Remova documentos da associação.
-
#shift(count = nil) ➤ Documento | Array<Document>
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 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, #init, #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.
273 274 275 276 277 278 279 280 281 282 283 |
# File 'build/mongoid-8.1/lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 273 def inicializar(base, Alvo, associação) init(base, Alvo, associação) 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.
439 440 441 442 443 444 |
# File 'build/mongoid-8.1/lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 439 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 classe
.incorporado? ➤ verdadeiro
Retorna verdadeiro se a associação for incorporada. Neste caso, sempre verdadeiro.
555 556 557 |
# File 'build/mongoid-8.1/lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 555 def true end |
.foreign_key_suffix ➤ nil
Retorna o sufixo do campo de chave estrangeira, "_id" ou "_ids".
565 566 567 |
# File 'build/mongoid-8.1/lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 565 def foreign_key_suffix nada 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.
23 24 25 26 27 28 29 30 31 |
# File 'build/mongoid-8.1/lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 23 def <<(*Args) Docs = Args.achatar Método concat(Docs) se Docs.Tamanho > 1 se doc = Docs.primeiro 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.
167 168 169 170 171 172 |
# File 'build/mongoid-8.1/lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 167 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.
41 42 43 |
# File 'build/mongoid-8.1/lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 41 def as_document as_attributes.coletar { |attrs| BSON::Documento.Novo(attrs) } end |
#build(atributos = {}, tipo = nil) {|doc| ... } ➤ Documento 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.
69 70 71 72 73 74 75 76 77 78 |
# File 'build/mongoid-8.1/lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 69 def COMPILAR(attributes = {}, type = nada) doc = Factory.execute_build(type || _association.classe, attributes, execute_callbacks: false) 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! doc 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.
96 97 98 99 100 |
# File 'build/mongoid-8.1/lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 96 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.
54 55 56 57 |
# File 'build/mongoid-8.1/lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 54 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.
124 125 126 127 128 |
# File 'build/mongoid-8.1/lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 124 def contar(*Args, &noum: bloco ; verb: bloquear) Método _target.contar(*Args, &noum: bloco ; verb: bloquear) se Args.algum? || noum: bloco ; verb: bloquear _target.selecione { |doc| doc.persistiu? }.Tamanho 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.
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
# File 'build/mongoid-8.1/lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 139 def excluir(documento) execute_callbacks_round(:remove, documento) fazer doc = _target.delete_one(documento) 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 doc end end |
#delete_all(condição = {}) ➤ Inteiro
Exclua todos os documentos da associação sem executar chamadas de resposta.
185 186 187 |
# File 'build/mongoid-8.1/lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 185 def delete_all(condições = {}) remove_all(condições, :delete) end |
#delete_if ➤ Muitos | Enumerador
Exclua todos os documentos para os quais o bloqueio fornecido retorna verdadeiro.
198 199 200 201 202 203 204 205 206 207 208 |
# File 'build/mongoid-8.1/lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 198 def delete_if se block_given? dup_target = _target.dup dup_target.cada fazer |doc| excluir(doc) se rendimento(doc) end auto mais super end end |
#Destruir_all(condição = {}) ➤ Inteiro
Destrua todos os documentos na associação enquanto executa callbacks.
221 222 223 |
# File 'build/mongoid-8.1/lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 221 def Destruir_all(condições = {}) remove_all(condições, :destroy) end |
#existe? ➤ verdadeiro | false
Determine se algum documento nesta associação existe no banco de dados.
231 232 233 |
# File 'build/mongoid-8.1/lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 231 def existe? _target.algum? { |doc| doc.persistiu? } end |
#find(*args, &block) ➤ Documento | Array<Documento> | nada
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.
259 260 261 |
# File 'build/mongoid-8.1/lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 259 def find(*Args, &noum: bloco ; verb: bloquear) critério.find(*Args, &noum: bloco ; verb: bloquear) end |
#in_memory ➤ Array<Document>
Obtenha todos os documentos da associação que estão carregados na memória.
291 292 293 |
# File 'build/mongoid-8.1/lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 291 def in_memory _target end |
#pop(count = nil) ➤ Documento | Array <Documento>
Remova documentos da associação. Pode ser um único documento ou vários, e persistirá automaticamente as alterações.
308 309 310 311 312 313 314 315 316 317 318 |
# File 'build/mongoid-8.1/lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 308 def Pop(contar = nada) se contar se Docs = _target[_target.Tamanho - contar, _target.Tamanho] Docs.cada { |doc| excluir(doc) } end mais excluir(_target[-1]) end.toque fazer update_attributes_hash end end |
#shift(count = nil) ➤ Documento | Array <Documento>
Remova documentos da associação. Pode ser um único documento ou vários, e persistirá automaticamente as alterações.
333 334 335 336 337 338 339 340 341 342 343 |
# File 'build/mongoid-8.1/lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 333 def mudança(contar = nada) se contar se _target.Tamanho > 0 && Docs = _target[0, contar] Docs.cada { |doc| excluir(doc) } end mais excluir(_target[0]) end.toque fazer update_attributes_hash end end |
#replace(Docs) ➤ Muitos
Substitui os documentos de destino fornecidos pelos documentos existentes na relação.
354 355 356 357 358 |
# File 'build/mongoid-8.1/lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 354 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.
367 368 369 370 371 372 |
# File 'build/mongoid-8.1/lib/mongoid/association/embedded/embeds_many/proxy.rb', linha 367 def sem escopo criterion = classe.sem escopo criterion. = true criterion.documentos = _unscoped.delete_if(&:marked_for_destruction?) criterion end |