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
-
#shard_key_field_value(campo, prefer_persisted:) ⇒ Objeto
privada
Devuelve el valor de la clave del fragmento nombrado.
-
#campos_clave_fragmento ⇒ Matriz<String>
Obtener los campos de clave de fragmento.
-
#selector_de_clave_de_fragmento(preferiblemente_persistente: falso) ⇒ Hash
privada
Retorna el selector que coincidiría con las claves de partición definidas.
-
#selector_de_clave_de_fragmento_en_db ⇒ Hash
privada
Devuelve el selector que coincidiría con la versión existente de este documento en la base de datos.
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.
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_fragmento ⇒ Matriz<String>
Refactorizado a partir del uso de delegado para mejorar el rendimiento de carga de clases.
Obtener 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.
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_db ⇒ 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 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.
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 |