모듈: Mongoid::Criteria::Scopable

포함 항목:
Mongoid::Criteria
다음에 정의됨:
lib/mongoid/criteria/scopable.rb

개요

Mongoid::Criteria에 포함된 Mixin 모듈은 기본값 쿼리 범위 및 명명된 범위와 관련된 기능을 추가합니다.

인스턴스 메서드 요약 접기

인스턴스 메서드 세부 정보

#apply_default_scope기준

기준에 기본 범위를 적용합니다.

예시:

기본 범위를 적용합니다.

criteria.apply_default_scope

반환합니다:



18
19
20
21
22
23
# 파일 'lib/mongoid/criteria/scopable.rb', 줄 18

def apply_default_scope
  class.without_default_scope do
    병합!(class.default_scoping.전화하기.)
  end
  self.scopeing_options = true, 거짓
end

#apply_scope(scope) ⇒ 기준

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

현재 기준에 범위를 적용합니다.

이 메서드는 수신자를 수정하지 않지만 인수에 따라 새 객체 또는 수신자를 반환할 수 있습니다. scope 인수가 nil이면 수정 없이 수신자를 반환하고, 그렇지 않으면 새 기준 객체를 반환합니다.

매개변수:

  • 범위 (Proc | Symbol | Criteria | nil)

    적용할 범위입니다.

반환합니다:

  • (기준)

    범위가 적용된 기준입니다.



37
38
39
40
41
42
43
44
45
46
47
48
# 파일 'lib/mongoid/criteria/scopable.rb', 줄 37

def apply_scope(범위)
  case 범위
  when Proc
    instance_exec(&범위)
  when 기호
    send(범위)
  when 기준
    merge(범위)
  other
    self
  end
end

#remove_scoping(기타) ⇒ 기준

다른 기준이 주어지면 이 기준에서 다른 기준의 범위를 제거합니다.

예시:

범위 지정을 제거합니다.

criteria.remove_scoping(other)

매개변수:

  • 기타 (기준)

    다른 기준.

반환합니다:

  • (기준)

    범위 지정이 제거된 기준입니다.



59
60
61
62
63
64
65
66
67
# 파일 'lib/mongoid/criteria/scopable.rb', 줄 59

def remove_scoping(기타)
  만약 기타
    거부_매칭(기타, :selector, :options)
    기타.포함. do |meta|
      포함.delete_one(meta)
    end
  end
  self
end

#범위 지정(옵션 = nil) ⇒ 기준

기준이 범위가 지정되지 않은 블록 내에 있지 않는 한 기준의 범위를 강제로 지정합니다.

예시:

기준의 범위를 강제로 지정합니다.

criteria.scoped(skip: 10)

매개변수:

  • 옵션 (해시) (기본값: nil)

    추가 쿼리 옵션.

반환합니다:

  • (기준)

    범위 기준입니다.



77
78
79
80
81
82
83
84
# 파일 'lib/mongoid/criteria/scopable.rb', 줄 77

def 범위 지정(옵션 = nil)
  crit = 복제
  crit.옵션.병합!(옵션 || {})
  만약 class.default_scopable? && !범위 지정?
    crit.apply_default_scope
  end
  crit
end

#범위?true | false

기준에 기본 범위가 적용되었나요?

예시:

기본 범위가 적용되나요?

criteria.scoped?

반환합니다:

  • (true | false)

    기본 범위가 적용되는 경우.



92
93
94
# 파일 'lib/mongoid/criteria/scopable.rb', 줄 92

def 범위 지정?
  !!(정의됨?(@scoped) ? @scoped : nil)
end

#scopeing_options배열

기준 범위 지정 옵션을 쌍(범위 지정, 범위 지정 없음)으로 가져옵니다.

예시:

범위 지정 옵션을 가져옵니다.

criteria.scoping_options

반환합니다:

  • (배열)

    범위 지정, 범위 지정 해제.



127
128
129
# 파일 'lib/mongoid/criteria/scopable.rb', 줄 127

def scopeing_options
  [ (정의됨?(@scoped) ? @scoped : nil), (정의됨?(@unscoped) ? @unscoped : nil) ]
end

#scopeing_options=(options) ⇒ 배열

기준 범위 지정 옵션을 쌍(범위 지정, 범위 지정 없음)으로 설정합니다.

예시:

범위 지정 옵션을 설정합니다.

criteria.scoping_options = true, false

매개변수:

  • 옵션 (배열)

    범위 지정, 범위 지정 해제.

반환합니다:

  • (배열)

    새로운 범위 지정 옵션.



139
140
141
# 파일 'lib/mongoid/criteria/scopable.rb', 줄 139

def scopeing_options=(옵션)
  @scoped, @unscoped = 옵션
end

#unscoped기준

기준에서 모든 범위를 지웁니다.

예시:

기준에서 모든 범위 지정을 취소합니다.

criteria.unscoped

반환합니다:

  • (기준)

    범위가 지정되지 않은 기준입니다.



102
103
104
105
106
107
108
109
# 파일 'lib/mongoid/criteria/scopable.rb', 줄 102

def 범위가 지정되지 않은
  crit = 복제
  하지 않는 한 범위가 지정되지 않았나요?
    crit.scopeing_options = 거짓, true
    crit.선택기.지우기; crit.옵션.지우기
  end
  crit
end

#unscoped?true | false

기준의 범위가 지정되지 않았나요?

예시:

기준의 범위가 지정되지 않았나요?

criteria.unscoped?

반환합니다:

  • (true | false)

    기준이 강제로 범위 지정되지 않은 경우입니다.



117
118
119
# 파일 'lib/mongoid/criteria/scopable.rb', 줄 117

def 범위가 지정되지 않았나요?
  !!(정의됨?(@unscoped) ? @unscoped : nil)
end

#with_default_scope기준

기본 범위를 적용할 수 있는 경우 기본 범위가 적용된 기준을 가져옵니다. 적용할 수 없는 경우: 범위가 지정되지 않은 차단에 있거나 기준이 이미 범위가 지정되지 않은 경우 또는 기본 범위가 이미 적용된 경우.

예시:

기본 범위로 기준을 가져옵니다.

criteria.with_default_scope

반환합니다:



152
153
154
155
156
157
158
# 파일 'lib/mongoid/criteria/scopable.rb', 줄 152

def with_default_scope
  crit = 복제
  만약 class.default_scopable? && !범위가 지정되지 않았나요? && !범위 지정?
    crit.apply_default_scope
  end
  crit
end