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

Incluido en:
HasMany, HasOne::Buildable
Definido en:
lib/mongoid/association/referenced/with_polymorphic_criteria.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'.

Resumen del método de instancia colapsar

Detalles del método de instancia

#with_polymorphic_criterion(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::Document)

    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 solución para la asociación inversa
    resolver = klass.reflect_on_association(como).resolver

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

    # 3. usar igualdad si sólo hay una clave, `in` si hay varias
    si claves.¿muchos?
      criterios.dónde(tipo => { :$in => claves })
    else
      criterios.dónde(tipo => claves.primero)
    end
  else
    criterios
  end
end