Módulo: Mongoid::Association::Referenced::WithPolymorphicCriteria Privado

Incluido en:
TieneMuchos, TieneUno::Construible
Definido en:
lib/mongoid/asociación/referenciada/con_criterios_polimórficos.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.

Implementa el comportamiento compartido 'with_polymorphic_criteria'.

Colapso del resumen del método de instancia

Detalles del método de instancia

#con_criterio_polimórfico(criterios, base) ⇒ Mongoid::Criteria

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Si el receptor representa una asociación polimórfica, se aplican los criterios de búsqueda polimórficos al objeto ‘criteria` dado.

Parámetros:

  • criterios (Mongoid::Criterios)

    Los criterios a añadir si el receptor es polimórfico.

  • base (Mongoid::Documento)

    El documento a utilizar al resolver las claves de tipo polimórfico.

Devuelve:

  • (Mongoid::Criterios)

    los criterios resultantes, que pueden ser los mismos que los de entrada.



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# Archivo 'lib/mongoid/association/referenced/with_polymorphic_criteria.rb', línea 20

def con criterio polimórfico(criterios, base)
  Si polimórfico?
    # 1. obtener el solucionador para la asociación inversa
    resolver = klass.reflexionar sobre la asociación(como).resolver

    # 2. busque la lista de claves del solucionador, dada la base
    claves = resolver.claves_para(base)

    # 3. use igualdad si solo hay una clave, `in` si hay varias
    Si claves.¿muchos?
      criterios.donde(tipo => { :$en => claves })
    else
      criterios.donde(tipo => claves.primera)
    end
  else
    criterios
  end
end