Módulo: Mongoid::Matcher::EqImpl Private
- Definido en:
- lib/mongoid/matcher/eq_impl.rb
Overview
Este módulo forma parte de una API privada. Debe evitar su uso siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.
Este módulo lo utilizan $eq y otros operadores que necesitan realizar la coincidencia que realiza $eq (por ejemplo, $ne, que niega el resultado de $eq). A diferencia de $eq, este módulo toma un operador original como argumento adicional a matches? para proporcionar los mensajes de excepción correctos que reflejan el operador que se invocó primero.
Colapso delresumen del método de clase
-
.¿coincide?(existe, valor, condición, operador_original) ⇒ verdadero | falso, booleano
privada
Devuelve si un valor satisface una expresión $eq (o similar).
-
.time_eq?(tiempo_a, tiempo_b) ⇒ verdadero | falso, booleano
privada
Según www.mongodb.com/es/docs/ruby-driver/current/tutorials/bson-v4/#time-instances, > los tiempos en BSON (y MongoDB) solo pueden tener una precisión de milisegundos.
-
.time_rounded_to_millis(tiempo) ⇒ verdadero | falso
privada
Redondea un valor de tiempo al milisegundo más cercano.
Detalles del método de clase
.¿coincide?(existe, valor, condición, operador_original) ⇒ verdadero | falso, booleano
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 si un valor satisface una expresión $eq (o similar).
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# Archivo 'lib/mongoid/matcher/eq_impl.rb', línea 24 module_function def ¿partidos?(exists, valor, condición, operador_original) caso condición Cuando Rango # Dado que $ne invoca $eq, el mensaje de excepción debe manejarse # ambos operadores. propagar Errors::Consulta no válida, "Elrango no se admite como argumento para '#{original_operator} ' " =begin si valor.es_a?(Array) valor.cualquiera? { |elt| condición.incluir?(elt) } else condición.include?(valor) end =end else # Al hacer una comparación con objetos de Tiempo, compare utilizando precisión de milisegundos Si valor.kind_of?(Tiempo) && condición.kind_of?(Tiempo) tiempo_eq?(valor, condición) elsif valor.is_a?(Arreglo) && condición.kind_of?(Tiempo) valor.map hacer |v| Si v.kind_of?(Tiempo) tiempo redondeado a milisegundos(v) else v end end.¿incluir?(tiempo redondeado a milisegundos(condición)) else valor == condición || valor.is_a?(Arreglo) && valor.¿incluir?(condición) end end end |
.time_eq?(tiempo_a, tiempo_b) ⇒ verdadero | falso, booleano
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Según www.mongodb.com/es/docs/ruby-driver/current/tutorials/bson-v4/#time-instances, los tiempos en BSON (y MongoDB) solo pueden tener una precisión de milisegundos. Cuando las instancias de Ruby Time se serializan a BSON o JSON extendido, los tiempos se redondean al milisegundo más cercano.
> Debido a este piso, se recomienda enfáticamente que las aplicaciones realicen todos los cálculos en tiempo real usando matemáticas enteras, ya que la inexactitud de los cálculos de punto flotante puede producir resultados inesperados.
Como tal, realice una operación similar a la que realiza la gema bson-ruby.
70 71 72 |
# Archivo 'lib/mongoid/matcher/eq_impl.rb', línea 70 module_function def tiempo_eq?(tiempo_a, tiempo_b) tiempo redondeado a milisegundos(tiempo_a) == tiempo redondeado a milisegundos(tiempo_b) end |
.time_rounded_to_millis(tiempo) ⇒ verdadero | falso
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Redondea un valor de tiempo al milisegundo más cercano.
79 80 81 |
# Archivo 'lib/mongoid/matcher/eq_impl.rb', línea 79 module_function def tiempo redondeado a milisegundos(hora) return hora._bson_to_i * 1000 + hora.usec.divmod(1000).primera end |