Módulo: Mongoid::Shardable
Visão geral
Este módulo contém o comportamento para adicionar campos de chave de shard às atualizações.
Definido sob namespace
Módulos: Métodos de classe
Recolhimento do Resumo do método de instância
-
#shard_key_field_value(campo, preferencial_persisted:) ➤ Objeto
privado
Retorna o valor da chave de shard nomeada.
-
#shard_key_fields ➤ Array<String>
Obtenha os campos de chave de fragmento.
-
#shard_key_selector(prefer_persisted: false) ➤ Hash
privado
Retorna o seletor que corresponderia às chaves de shard definidas.
-
#shard_key_selector_in_db ➤ Hash
privado
Retorna o seletor que corresponderia à versão existente deste documento no banco de dados.
Detalhes do método de instância
#shard_key_field_value(campo, preferencial_persisted:) ➤ 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.
Retorna o valor da chave de fragmento nomeada. Se o campo identificar um documento incorporado, a chave será analisada e avaliada recursivamente. Se prefer_persisted for verdadeiro, o último valor persistido no banco de dados será retornado, independentemente de qual seja o valor atual do atributo.
94 95 96 97 98 99 100 101 102 103 |
# Arquivo 'lib/mongoid/shardable.rb', linha 94 def shard_key_field_value(Campo, prefer_persisted:) se Campo.incluir?('.') relação, restante = Campo.dividir('.', 2) enviar(relação)&.shard_key_field_value(restante, prefer_persisted: prefer_persisted) elsif prefer_persisted && !new_record? Atributo_was(Campo) mais enviar(Campo) end end |
#shard_key_fields ➤ Array<String>
Refatorado do uso do delegado para o desempenho da carga de classe.
Obtenha os campos de chave de fragmento.
45 46 47 |
# Arquivo 'lib/mongoid/shardable.rb', linha 45 def shard_key_fields auto.classe.shard_key_fields end |
#shard_key_selector(prefer_persisted: false) ➤ Hash
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 o seletor que corresponderia às chaves de fragmento definidas. Se prefer_persisted for falso (o padrão), ele usará os valores atuais das chaves de fragmento especificadas, caso contrário, tentará usar qualquer valor que tenha sido persistido mais recentemente.
61 62 63 64 65 |
# Arquivo 'lib/mongoid/shardable.rb', linha 61 def shard_key_selector(prefer_persisted: false) shard_key_fields.cada_com_objeto({}) fazer |Campo, seletor| seletor[Campo.to_s] = shard_key_field_value(Campo.to_s, prefer_persisted: prefer_persisted) end end |
#shard_key_selector_in_db ➤ Hash
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 o seletor que corresponderia à versão existente deste documento no banco de dados.
Se o documento não for persistente, esse método usará os valores atuais dos campos de chave de fragmento. Se o documento for persistente, esse método usará os valores recuperados do banco de banco de dados.
77 78 79 |
# Arquivo 'lib/mongoid/shardable.rb', linha 77 def shard_key_selector_in_db shard_key_selector(prefer_persisted: true) end |