Módulo: Mongoid::Shardable

Estendido por:
ActiveSupport::Concern
Incluído em:
Componível
Definido em:
lib/mongoid/shardable.rb

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

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 shard 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 banco de dados será retornado, independentemente de qual seja o valor atual do atributo.

Parâmetros:

  • Campo (string)

    O nome do campo para avaliar

  • prefer_persisted (true|false)

    Se deseja ou não preferir o valor persistente em relação ao valor atual.

Retorna:

  • (Objeto)

    O valor do campo nomeado.



96
97
98
99
100
101
102
103
104
105
# Arquivo 'lib/mongoid/shardable.rb', linha 96

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>

Observação:

Refatorado do uso do delegado para o desempenho da carga de classe.

Obtenha os campos de chave de fragmento.

Exemplos:

Obtenha os campos de chave de fragmento.

model.shard_key_fields

Retorna:

  • (Array<String>)

    Os nomes de campo da chave de shard.



47
48
49
# Arquivo 'lib/mongoid/shardable.rb', linha 47

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 shard definidas. Se 'prefer_persisted' for falso (o padrão), ele usará os valores atuais das chaves de shard especificadas, caso contrário, tentará usar qualquer valor que tenha sido persistido mais recentemente.

Parâmetros:

  • prefer_persisted (verdadeiro | falso) (padrão para: false)

    Se deve usar o valor atual dos campos de chave de fragmento ou usar seus valores persistentes mais recentemente.

Retorna:

  • (Hash)

    O seletor de chave de shard.



63
64
65
66
67
# Arquivo 'lib/mongoid/shardable.rb', linha 63

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.

Retorna:

  • (Hash)

    O seletor de chave de shard.



79
80
81
# Arquivo 'lib/mongoid/shardable.rb', linha 79

def shard_key_selector_in_db
  shard_key_selector(prefer_persisted: true)
end