Módulo: Mongoid::Shardable
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
-
#shard_key_field_value(campo, prefer_persisted:) ⇒ objeto
privado
Devuelve el valor de la clave de partición nombrada.
-
#shard_key_fields ⇒ arreglo<String>
Obtenga los campos de la clave de partición.
-
#shard_key_selector(prefer_persisted: false) ⇒ Hash
privado
Retorna el selector que coincidiría con las claves de partición definidas.
-
#shard_key_selector_in_db ⇒ Hash
privado
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 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.
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_fields ⇒ arreglo<String>
Refactorizado para no usar delegado para el rendimiento de carga de clases.
Obtenga 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.
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_db ⇒ 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 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.
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 |