Módulo: Mongoid::Shardable

Ampliado por:
ActiveSupport::Preocupación
Incluido en:
Componible
Definido en:
lib/mongoid/shardable.rb

Overview

Este módulo contiene el comportamiento para agregar campos de clave de fragmento a las actualizaciones.

Definido en el espacio de nombres

Modules: Métodos de clase

Colapso del resumen del método de instancia

Detalles del método de instancia

#shard_key_field_value(campo, prefer_persisted:) ⇒ Objeto

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve el valor de la clave de fragmento especificada. Si el campo identifica un documento incrustado, la clave se analizará y evaluará recursivamente. Si "prefer_persisted" es verdadero, se devolverá el último valor persistido en la base de datos, independientemente del valor actual del atributo.

Parámetros:

  • Campo (Cadena) -

    El nombre del campo a evaluar

  • prefer_persisted (verdadero|falso)

    Si preferir o no el valor persistente sobre el valor actual.

Devuelve:

  • (Objeto) -

    El valor del campo nombrado.



96
97
98
99
100
101
102
103
104
105
# Archivo 'lib/mongoid/shardable.rb', línea 96

def valor del campo de clave de fragmento(Campo, prefer_persisted:)
  Si Campo.¿incluir?(". ")
    relación, restantes = Campo.división(". ", 2)
    Enviar(relación)&.valor del campo de clave de fragmento(restantes, prefer_persisted: prefer_persisted)
  elsif prefer_persisted && !¿nuevo_registro?
    atributo_era(Campo)
  else
    Enviar(Campo)
  end
end

#campos_clave_fragmentoMatriz<String>

Nota:

Refactorizado a partir del uso de delegado para mejorar el rendimiento de carga de clases.

Obtener los campos de clave de fragmento.

Ejemplos:

Obtener los campos de clave de fragmento.

model.shard_key_fields

Devuelve:

  • (Matriz<String>)

    Los nombres de los campos de clave de fragmento.



47
48
49
# Archivo 'lib/mongoid/shardable.rb', línea 47

def campos de clave de fragmento
  yo.clase.campos de clave de fragmento
end

#selector_de_clave_de_fragmento(preferiblemente_persistente: falso) ⇒ Hash

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve el selector que coincidiría con las claves de fragmento definidas. Si "prefer_persisted" es falso (valor predeterminado), se utilizan los valores actuales de las claves de fragmento especificadas; de lo contrario, se intentará usar el valor más reciente que se haya persistido.

Parámetros:

  • prefer_persisted (true | false) (predeterminado: falso)

    Si se debe utilizar el valor actual de los campos de clave de fragmento o utilizar sus valores persistentes más recientes.

Devuelve:

  • (Hash)

    El selector de clave de fragmento.



63
64
65
66
67
# Archivo 'lib/mongoid/shardable.rb', línea 63

def selector de clave de fragmento(prefer_persisted: false)
  campos de clave de fragmento.cada_con_objeto({}) hacer |Campo, selector|
    selector[Campo.a_s] = valor del campo de clave de fragmento(Campo.a_s, prefer_persisted: prefer_persisted)
  end
end

#selector_de_clave_de_fragmento_en_dbHash

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve el selector que coincidiría con la versión existente de este documento en la base de datos.

Si el documento no se conserva, este método utiliza los valores actuales de los campos de clave del fragmento. Si se conserva, este método utiliza los valores recuperados de la base de datos.

Devuelve:

  • (Hash)

    El selector de clave de fragmento.



79
80
81
# Archivo 'lib/mongoid/shardable.rb', línea 79

def selector de claves de fragmentos en la base de datos
  selector de clave de fragmento(prefer_persisted: true)
end