Módulo: Mongoid::Matcher::FieldExpression Private
- Definido em:
- lib/mongoid/matcher/field_expression.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.
Módulo Singleton usado para avaliar se um determinado valor na memória corresponde a uma expressão de query MSQL relacionada a um campo específico.
Recolhimento do Resumo do método de classe
-
.correspondências?(existe, valor, condição) ➤ verdadeiro | falso, booleano
privado
Retorna se um valor satisfaz uma condição.
Detalhes do método de classe
.correspondências?(existe, valor, condição) ➤ verdadeiro | false, booleano
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.
Retorna se um valor satisfaz uma condição.
21 22 23 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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# Arquivo 'lib/mongoid/matcher/field_expression.rb', linha 21 module_function def correspondências?(existe, valor, Condição) se Condição.is_a?(Hash) Condição.todos? fazer |k, cond_v| k = k.to_s se k.start_with?('$') se %w($regex $opções).incluir?(k) a menos que Condição.chave?('$regex') aumentar Errors::Query inválida, "$regex é necessário se $options for fornecido: #{Erros::InvalidQuery.truncate_expr(conditions)}" end se k == '$regex' se = Condição['$options'] cond_v = caso cond_v quando regexp BSON::regexp::Cru.Novo(cond_v.Fonte, ) quando BSON::regexp::Cru BSON::regexp::Cru.Novo(cond_v.padrão, ) mais BSON::regexp::Cru.Novo(cond_v, ) end elsif String === cond_v cond_v = BSON::regexp::Cru.Novo(cond_v) end FieldOperator.obter(k).correspondências?(existe, valor, cond_v) mais # $opções são correspondidas como parte de $regex true end mais FieldOperator.obter(k).correspondências?(existe, valor, cond_v) end elsif Hash === valor sub_values = Matcher.extract_attribute(valor, k) se sub_values.Tamanho > 0 sub_values.algum? fazer |sub_v| Eq.correspondências?(true, sub_v, cond_v) end mais Eq.correspondências?(false, nada, cond_v) end mais false end end mais caso Condição quando ::regexp, BSON::regexp::Cru expressão regular.correspondências_array_or_scalar?(valor, Condição) mais Eq.correspondências?(existe, valor, Condição) end end end |