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 añadir campos de clave de partición 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 es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve el valor para la clave de partición con nombre. 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 de cuál sea el valor actual del atributo.

Parámetros:

  • Campo (string)

    El nombre del campo a evaluar

  • prefer_persisted (verdadero|falso)

    Si se debe o no preferir el valor almacenado sobre el valor actual.

Devuelve:

  • (objeto)

    El valor del campo nombrado.



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

def shard_key_field_value(Campo, prefer_persisted:)
  si Campo.incluir?('.')
    relación, restante = Campo.división('.', 2)
    enviar(relación)&.shard_key_field_value(restante, prefer_persisted: prefer_persisted)
  elsif prefer_persisted && !nuevo_registro?
    attribute_was(Campo)
  else
    enviar(Campo)
  end
end

#shard_key_fieldsarreglo<String>

Nota:

Refactorizado para no usar delegado para 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.



45
46
47
# Archivo 'lib/mongoid/shardable.rb', línea 45

def shard_key_fields
  sí mismo.clase.shard_key_fields
end

#shard_key_selector(prefer_persisted: false) ⇒ Hash

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve el selector que coincide con las claves de partición definidas. Si prefer_persisted es falsa (por defecto), utiliza los valores actuales de las claves de fragmento especificadas; de lo contrario, intentará utilizar el último valor que se haya guardado.

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.



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

def selector_de_clave_shard(prefer_persisted: false)
  shard_key_fields.each_with_object({}) hacer |Campo, selector|
    selector[Campo.to_s] = shard_key_field_value(Campo.to_s, prefer_persisted: prefer_persisted)
  end
end

#shard_key_selector_in_dbHash

Este método es parte de una API privada. Se debe evitar el uso de este método 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.



77
78
79
# Archivo 'lib/mongoid/shardable.rb', línea 77

def shard_key_selector_in_db
  selector_de_clave_shard(prefer_persisted: true)
end