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

Incluído em:
HasMany, HasOne::Buildable
Definido em:
lib/mongoid/association/referenced/with_polymorphic_criteria.rb

Visão geral

Este módulo faz parte de uma API privada. Você deve evitar usar este módulo, se possível, pois ele pode ser removido ou alterado no futuro.

Implementa o comportamento compartilhado 'with_polymorphic_criteria'.

Recolhimento do Resumo do método de instância

Detalhes do método de instância

#with_polymorphic_criterion(criteria, base) ➤ Mongoid::Criteria

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Se o receptor representar uma associação polimórfica, aplica os critérios de pesquisa polimórfica ao objeto'critérios' fornecido.

Parâmetros:

  • critério (Mongoid::Criteria)

    os critérios a serem anexados se o receptor for polimórfico.

  • base (Mongoid::Document)

    o documento a ser usado ao resolver as chaves de tipo polimórfico.

Retorna:

  • (Mongoid::Criteria)

    os critérios resultantes, que podem ser os mesmos que a entrada.



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

def with_polymorphic_criterion(critério, base)
  se polimórfico?
    # 1. obtenha o resolvedor para a associação inversa
    resolvedor = classe.mirror_on_association(como).resolvedor

    # 2. procure a lista de chaves do resolvedor, determinada base
    keys = resolvedor.chaves_para(base)

    # 3. usar igualdade se houver apenas uma chave, `in' se houver várias
    se keys.muitos?
      critério.ONDE(type => { :$in => keys })
    mais
      critério.ONDE(type => keys.primeiro)
    end
  mais
    critério
  end
end