모듈: Mongoid::Matcher::FieldExpression Private
- 다음에 정의됨:
- lib/mongoid/matcher/field_expression.rb
개요
이 모듈은 비공개 API의 일부입니다. 이 모듈은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
주어진 인메모리 값이 특정 필드 와 관련된 MSQL 쿼리 표현식 과 일치하는지 여부를 평가하는 데 사용되는 싱글톤 모듈입니다.
클래스 메서드 요약 접기
-
.일치합니까?(존재, 값, 조건) ⇒ true | false, 부울
비공개
값이 조건을 충족하는지 여부를 반환합니다.
클래스 메서드 세부 정보
.일치합니까?(존재, 값, 조건) ⇒ true | false, 부울
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
값이 조건을 충족하는지 여부를 반환합니다.
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 |