Módulo: Mongoid::Shardable

Ampliado por:
ActiveSupport::Concern
Incluido en:
Compuesto
Definido en:
lib/mongoid/shardable.rb

Overview

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

Definido bajo Namespace

Modules: ClassMethods

Resumen del método de instancia colapsar

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 (string)

    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, restante = Campo.división(".", 2)
    enviar(relación)&.valor del campo de clave de fragmento(restante, prefer_persisted: prefer_persisted)
  elsif prefer_persisted && !nuevo_registro?
    attribute_was(Campo)
  else
    enviar(Campo)
  end
end

#shard_key_fieldsarreglo<String>

Nota:

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

Obtenga los campos de la clave de partición.

Ejemplos:

Obtenga los campos de la clave de partición.

model.shard_key_fields

Devuelve:

  • (arreglo<String>)

    Los nombres de los campos de la clave de partición.



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

def shard_key_fields
  sí mismo.clase.shard_key_fields
end

#shard_key_selector(prefer_persisted: false) ⇒ 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 partición definidas. Si ‘prefer_persisted` es falso (por defecto), se emplean los valores actuales de las claves de partición especificados; de lo contrario, se intentará emplear cualquier valor que se haya guardado más recientemente.

Parámetros:

  • prefer_persisted (true | false) (por defecto: false)

    Si utilizar los valores actuales de los campos clave de partición o si utilizar sus valores más recientes persistidos.

Devuelve:

  • (encriptada)

    Selector de clave de partición.



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

def selector_de_clave_shard(prefer_persisted: false)
  shard_key_fields.each_with_object({}) hacer |Campo, selector|
    selector[Campo.to_s] = valor del campo de clave de fragmento(Campo.to_s, prefer_persisted: prefer_persisted)
  end
end

#shard_key_selector_in_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 persiste, este método usa los valores actuales de los campos de las claves de partición. Si el documento se guarda, este método utiliza los valores recuperados de la base de datos.

Devuelve:

  • (encriptada)

    Selector de clave de partición.



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

def shard_key_selector_in_db
  selector_de_clave_shard(prefer_persisted: true)
end