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
-
#_children ➤ Array<Document>
privado
Leve todos os
Documents
para esteDocument
. -
#_descendentes ➤ Array<Document>
privado
Obtenha todos os descendentes
Documents
desteDocument
recursivamente. - #_parent ➤ Object
- #_parent=(p) 3 Objeto
-
#_reset_memoized_descendentes! ➤ nulo
privado
Redefine os descendentes memoizados no objeto.
-
#_root ⇒ Document
Retornar o documento raiz no grafo de objeto .
-
#_root? ➤ verdadeiro | false
Este documento é o documento raiz da hierarquia?
-
#collection_children ➤ Array<Document>
privado
Colete todos os filhos deste documento.
-
#collection_descendentes ➤ Array<Document>
privado
Colete todos os descendentes deste documento.
-
#flag_descendents_persisted ➤ Array<Document>
Marca todos os descendentes como persistentes.
-
#hereditário? ➤ verdadeiro | false
Determina se o documento é uma subclasse de outro documento.
-
#parentize(documento) ➤ Documento
Define uma associação pai/filho.
-
#remove_child(child) ➤ Objeto
Remova um documento filho deste pai.
-
#reinício_persisted_descendentes ➤ Array<Document>
Depois que os descendentes persistirem, podemos chamar isso para mover todas as suas alterações e sinalizá-las como persistentes em uma chamada.
Detalhes do método de instância
#_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.
Obter todos os Documents
para este Document
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.
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.
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 |
#_root ⇒ Document
Retornar o documento raiz no grafo de objeto . Se o documento atual for o objeto raiz no gráfico, ele retornará self.
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?
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.
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 = [] .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.
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 = [] = [] = {} .cada_pair fazer |name, associação| sem_autobuild fazer criança = enviar(name) se criança += Array.wrap(criança) end end end até que .vazio? = = [] .cada fazer |criança| próximo se [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. [criança] = true se criança._id crianças << criança += criança._children end end crianças end |
#flag_descendentes_persisted ➤ DocumentoArray >
Marca todos os descendentes como persistentes.
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.
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.
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
.
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. 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.
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 |