모듈: Mongoid::Matcher::FieldExpression Private

다음에 정의됨:
lib/mongoid/matcher/field_expression.rb

개요

이 모듈은 비공개 API의 일부입니다. 이 모듈은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

주어진 인메모리 값이 특정 필드 와 관련된 MSQL 쿼리 표현식 과 일치하는지 여부를 평가하는 데 사용되는 싱글톤 모듈입니다.

클래스 메서드 요약 접기

클래스 메서드 세부 정보

.일치합니까?(존재, 값, 조건) ⇒ true | false, 부울

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

값이 조건을 충족하는지 여부를 반환합니다.

매개변수:

  • 이 존재합니다 (true | false)

    값이 존재하는지 여부입니다.

  • value (객체)

    확인할 값입니다.

  • 조건 (해시 | 객체)

    조건 술어입니다.

반환합니다:

  • (true | false)

    값이 일치하는지 여부입니다.

  • (부울)


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
# 파일 'lib/mongoid/matcher/field_expression.rb', 줄 21

module_function def 일치합니까?(이 존재합니다, value, 조건)
  만약 조건.is_a?(해시)
    조건.모두? do |k, cond_v|
      k = k.to_s
      만약 k.start_with?('$')
        만약 %w(정규식 $options).포함?(k)
          하지 않는 한 조건.키?('$regex')
            올리다 오류::InvalidQuery, "$options가 제공된 경우 $regex가 필요합니다: #{Errors::InvalidQuery.truncate_expr(condition)}"
          end

          만약 k == '$regex'
            만약 옵션 = 조건['$options']
              cond_v = case cond_v
              when 정규 표현식
                BSON::정규 표현식::원시.신규(cond_v.source, 옵션)
              when BSON::정규 표현식::원시
                BSON::정규 표현식::원시.신규(cond_v.패턴, 옵션)
              other
                BSON::정규 표현식::원시.신규(cond_v, 옵션)
              end
            elsif 문자열 === cond_v
              cond_v = BSON::정규 표현식::원시.신규(cond_v)
            end

            FieldOperator.get(k).일치합니까?(이 존재합니다, value, cond_v)
          other
            # $options $regex의 일부로 일치합니다.
            true
          end
        other
          FieldOperator.get(k).일치합니까?(이 존재합니다, value, cond_v)
        end
      elsif 해시 === value
        sub_values = 일치자.extract_attribute(value, k)
        만약 sub_values.분량 > 0
          sub_values.어떤? do |sub_v|
            Eq.일치합니까?(true, sub_v, cond_v)
          end
        other
          Eq.일치합니까?(거짓, nil, cond_v)
        end
      other
        거짓
      end
    end
  other
    case 조건
    when ::정규 표현식, BSON::정규 표현식::원시
      정규식.match_array_or_scalar?(value, 조건)
    other
      Eq.일치합니까?(이 존재합니다, value, 조건)
    end
  end
end