Módulo: Mongoid::Traversable

Estendido por:
ActiveSupport::Concern
Incluído em:
Componível
Definido em:
build/mongoid-8.1/lib/mongoid/traversable.rb

Visão geral

Fornece comportamento ao atravessar o gráfico do documento .

Definido sob namespace

Módulos: ClassMethods, DiscriminatorAssignment, DiscriminatorRetrieval

Recolhimento do Resumo do método de instância

Detalhes do método de instância

#_childrenArray<Document>

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.

Obter todos os Documents para este Document

Retorna:

  • (Array <Document>)

    Todos os documentos filhos na hierarquia.



123
124
125
# File 'build/mongoid-8.1/lib/mongoid/traversable.rb', linha 123

def _children
  @__children ||= collection_children
end

#_descendentes ➤ Array<Documento>

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.

Obtenha todos os descendentes Documents deste Document recursivamente. Isso é usado ao chamar operações de persistência de atualização a partir do documento raiz , em que as alterações em toda a árvore precisam ser determinadas. Observe que a persistência dos documentos incorporados sempre será preferida, já que são chamadas otimizadas... Essa operação pode ficar cara em domínios com grandes hierarquias.

Retorna:

  • (Array <Document>)

    Todos os documentos descendentes na hierarquia.



137
138
139
# File 'build/mongoid-8.1/lib/mongoid/traversable.rb', linha 137

def _descendentes
  @__descendentes ||= collection_descendentes
end

#_parent ➤ Object



11
12
13
# File 'build/mongoid-8.1/lib/mongoid/traversable.rb', linha 11

def _parent
  @__parent ||= nada
end

#_parent=(p) 3 Objeto



15
16
17
# File 'build/mongoid-8.1/lib/mongoid/traversable.rb', linha 15

def _parent=(p)
  @__parent = p
end

#_reset_memoized_descendentes!nulo

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.

Redefine os descendentes memoizados no objeto. Chamado internamente quando uma array incorporada muda de tamanho.

Retorna:

  • (nil)

    nil.



262
263
264
265
266
# File 'build/mongoid-8.1/lib/mongoid/traversable.rb', linha 262

def _reset_memoized_descendentes!
  _parent._reset_memoized_descendentes! se _parent
  @__children = nada
  @__descendentes = nada
end

#_rootDocument

Retornar o documento raiz no grafo de objeto . Se o documento atual for o objeto raiz no gráfico, ele retornará self.

Exemplos:

Obtenha o documento raiz na hierarquia.

document._root

Retorna:

  • (Documento)

    O documento raiz na hierarquia.



275
276
277
278
279
# File 'build/mongoid-8.1/lib/mongoid/traversable.rb', linha 275

def _root
  objeto = auto
  enquanto (objeto._parent) fazer objeto = objeto._parent; end
  objeto
end

#_root?verdadeiro | false

Este documento é o documento raiz da hierarquia?

Exemplos:

O documento é a raiz?

document._root?

Retorna:

  • (verdadeiro | falso)

    Se o documento for a raiz.



287
288
289
# File 'build/mongoid-8.1/lib/mongoid/traversable.rb', linha 287

def _root?
  _parent ? false : true
end

#collection_children ➤ Array<Document>

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.

Colete todos os filhos deste documento.

Retorna:



146
147
148
149
150
151
152
153
154
155
156
157
# File 'build/mongoid-8.1/lib/mongoid/traversable.rb', linha 146

def collection_children
  crianças = []
  embedded_relations.cada_pair fazer |name, associação|
    sem_autobuild fazer
      criança = enviar(name)
      se criança
        crianças += Array.wrap(criança)
      end
    end
  end
  crianças
end

#collection_descendentes ➤ Array<Documento>

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.

Colete todos os descendentes deste documento.

Retorna:

  • (Array <Document>)

    Os descendentes.



164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
# File 'build/mongoid-8.1/lib/mongoid/traversable.rb', linha 164

def collection_descendentes
  crianças = []
  to_expand = []
  Expandido = {}
  embedded_relations.cada_pair fazer |name, associação|
    sem_autobuild fazer
      criança = enviar(name)
      se criança
        to_expand += Array.wrap(criança)
      end
    end
  end
  até que to_expand.vazio?
    expandindo = to_expand
    to_expand = []
    expandindo.cada fazer |criança|
      próximo se Expandido[criança]
      # Não marque expandido se _id for nulo, pois os documentos são comparados por
      # seus _ids, vários documentos incorporados com IDs nulos serão comparados
      # igualmente, e alguns documentos não serão expandidos.
      Expandido[criança] = true se criança._id
      crianças << criança
      to_expand += criança._children
    end
  end
  crianças
end

#flag_descendentes_persisted ➤ DocumentoArray >

Marca todos os descendentes como persistentes.

Retorna:

  • (Array <Document>)

    Os descendentes sinalizados.



195
196
197
198
199
# File 'build/mongoid-8.1/lib/mongoid/traversable.rb', linha 195

def flag_descendentes_persisted
  _descendentes.cada fazer |criança|
    criança.new_record = false
  end
end

#hereditário?verdadeiro | false

Determina se o documento é uma subclasse de outro documento.

Exemplos:

Verifique se o documento é uma subclasse

Square.new.hereditary?

Retorna:

  • (verdadeiro | falso)

    Verdadeiro se hereditário, falso se não.



207
208
209
# File 'build/mongoid-8.1/lib/mongoid/traversable.rb', linha 207

def hereditário?
  auto.classe.hereditário?
end

#parentize(documento) ➤ Documento

Define uma associação pai/filho. Isso é usado para objetos recém-criados para que eles possam ser adicionados corretamente ao gráfico.

Exemplos:

Defina o documento pai .

document.parentize(parent)

Parâmetros:

  • documento (Documento)

    O documento pai .

Retorna:



220
221
222
# File 'build/mongoid-8.1/lib/mongoid/traversable.rb', linha 220

def parentizar(documento)
  auto._parent = documento
end

#remove_child(child) ➤ Objeto

Remova um documento filho deste pai. Se um incorporado, defina como nulo, caso contrário, remova muitos incorporados.

Isso é chamado a partir do comando de persistência do RemoveEmbedded .

Exemplos:

Remova a criança.

document.remove_child(child)

Parâmetros:

  • criança (Documento)

    O documento secundário (incorporado) a ser removido.



233
234
235
236
237
238
239
240
241
242
# File 'build/mongoid-8.1/lib/mongoid/traversable.rb', linha 233

def remove_child(criança)
  name = criança.association_name
  se criança.embedded_one?
    auto.attributes.excluir(criança._association.store_as)
    remove_ivar(name)
  mais
    relação = enviar(name)
    relação._remove(criança)
  end
end

#reinício_persisted_descendentes ➤ Array<Documento>

Depois que os descendentes persistirem, podemos chamar isso para mover todas as suas alterações e sinalizá-las como persistentes em uma chamada.

Retorna:

  • (Array <Document>)

    Os descendentes.



248
249
250
251
252
253
254
# File 'build/mongoid-8.1/lib/mongoid/traversable.rb', linha 248

def reinício_persisted_descendentes
  _descendentes.cada fazer |criança|
    criança.move_changes
    criança.new_record = false
  end
  _reset_memoized_descendentes!
end