모듈: Mongoid::Traversable
개요
문서 그래프 탐색과 관련된 동작을 제공하기 위해 Mongoid::Document에 Mixin 모듈이 포함되어 있습니다.
네임스페이스 아래에 정의됨
모듈: ClassMethods, 판별 자 할당 , 판별자 검색
클래스 메서드 요약 접기
인스턴스 메서드 요약 접기
-
#_children(reset: false) ⇒ Array<Document>
비공개
모든 하위
Documents
을(를) 이Document
로 가져옵니다. -
#_descendants(reset: false) ⇒ Array<Document>
비공개
이
Document
의 모든 하위 항목Documents
를 재귀적으로 가져옵니다. -
#_parent ⇒ Mongoid::Document | nil
비공개
이 문서 의 상위 문서 를 조회합니다.
-
#_parent=(문서) ⇒ 객체
비공개
이 문서 의 상위 문서 를 설정합니다.
-
#_reset_memoized_descendants! ⇒ nil
비공개
객체 에서 메모된 하위 항목을 재설정합니다.
-
#_root ⇒ Document
객체 그래프 에서 루트 문서 를 반환합니다.
-
#_root? ⇒ true | false
이 문서가 계층 구조의 루트 문서입니까?
-
#collection_children ⇒ Array<Document>
비공개
이 문서의 모든 하위 항목을 수집합니다.
-
#collection_descendants ⇒ Array<Document>
비공개
이 문서 의 모든 하위 항목을 수집합니다.
-
#flag_descendants_persisted ⇒ Array<Document>
모든 하위 항목을 지속형으로 표시합니다.
-
#유전성? ⇒ true | false
문서 가 다른 문서 의 하위 클래스인지 확인합니다.
-
#parentize(문서) ⇒ Document
하위/부모 연관 관계를 설정합니다.
-
#remove_child(자식) ⇒ 객체
이 상위 문서에서 하위 문서 를 제거합니다.
-
#reset_persisted_descendants ⇒ Array<Document>
하위 항목이 지속된 후에는 이를 호출하여 모든 변경 사항을 이동하고 한 번의 호출로 지속되는 것으로 플래그를 지정할 수 있습니다.
클래스 메서드 세부 정보
.__redefine(소유자, 이름, 값) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# 파일 'lib/mongoid/traversable.rb', 줄 17 def __redefine(소유자, 이름, value) 만약 소유자.singleton_class? 소유자.redefine_method(이름) { value } 소유자.send(:public, 이름) end 소유자.redefine_singleton_method(이름) { value } 소유자.singleton_class.send(:public, 이름) 소유자.redefine_singleton_method("#{name}=") do |new_value| 만약 소유자.같음?(self) value = new_value other ::몽고이드::순회 가능.재정의(self, 이름, new_value) end end 소유자.singleton_class.send(:public, "#{name}=") end |
인스턴스 메서드 세부 정보
#_children(reset: false) ⇒ Array<Document>
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
모든 하위 Documents
을(를) 이 Document
로 가져옵니다.
239 240 241 242 243 244 245 246 247 248 249 250 |
# 파일 'lib/mongoid/traversable.rb', 줄 239 def _children(재설정: 거짓) # `_parent` 메서드에 대해서는 위의 설명을 참조하여 변수가 # 여기에는 두 개의 밑줄이 있어야 합니다. # # Rubocop:disable Naming/MemoizedInstanceVariableName 만약 재설정 @__children = nil other @__children ||= collection_children end # Rubocop: 활성화 Naming/MemoizedInstanceVariableName end |
#_descendants(reset: false) ⇒ Array<Document>
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
이 Document
의 모든 하위 항목 Documents
를 재귀적으로 가져옵니다. 이는 전체 트리의 변경 사항을 확인해야 하는 루트 문서 에서 지속성 업데이트 작업을 호출할 때 사용됩니다. 내장된 문서의 지속성은 최적화된 호출이므로 항상 선호됩니다... 이 작업은 계층이 큰 도메인에서는 비용이 많이 들 수 있습니다.
262 263 264 265 266 267 268 269 270 271 272 273 |
# 파일 'lib/mongoid/traversable.rb', 줄 262 def _descendants(재설정: 거짓) # `_parent` 메서드에 대해서는 위의 설명을 참조하여 변수가 # 여기에는 두 개의 밑줄이 있어야 합니다. # # Rubocop:disable Naming/MemoizedInstanceVariableName 만약 재설정 @__descendants = nil other @__descendants ||= collection_descendants end # Rubocop: 활성화 Naming/MemoizedInstanceVariableName end |
#_parent ⇒ Mongoid::Document | nil
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
이 문서 의 상위 문서 를 조회합니다.
109 110 111 |
# 파일 'lib/mongoid/traversable.rb', 줄 109 def _parent @__parent || nil end |
#_parent=(문서) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
이 문서 의 상위 문서 를 설정합니다.
121 122 123 |
# 파일 'lib/mongoid/traversable.rb', 줄 121 def _parent=(문서) @__parent = 문서 end |
#_reset_memoized_descendants! ⇒ nil
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
객체 에서 메모된 하위 항목을 재설정합니다. 내장된 배열 의 크기가 변경될 때 내부적으로 호출됩니다.
389 390 391 392 393 |
# 파일 'lib/mongoid/traversable.rb', 줄 389 def _reset_memoized_descendants! _parent&._reset_memoized_descendants! _children 재설정: true _descendants 재설정: true end |
#_root ⇒ Document
객체 그래프 에서 루트 문서 를 반환합니다. 현재 문서 가 그래프 의 루트 객체 인 경우 자체를 반환합니다.
402 403 404 405 406 |
# 파일 'lib/mongoid/traversable.rb', 줄 402 def _root 객체 = self 객체 = 객체._parent 동안 객체._parent 객체 end |
#_root? ⇒ true | false
이 문서가 계층 구조의 루트 문서입니까?
414 415 416 |
# 파일 'lib/mongoid/traversable.rb', 줄 414 def _root? _parent ? 거짓 : true end |
#collection_children ⇒ 배열<문서>
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
이 문서의 모든 하위 항목을 수집합니다.
280 281 282 283 284 285 286 287 288 289 |
# 파일 'lib/mongoid/traversable.rb', 줄 280 def collection_children [].탭 do |어린이| .각각의 쌍 do |이름, _association| without_autobuild do 자식 = send(이름) 어린이.concat(배열.랩(자식)) 만약 자식 end end end end |
#collection_descendants ⇒ Array<문서>
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
이 문서 의 모든 하위 항목을 수집합니다.
296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 |
# 파일 'lib/mongoid/traversable.rb', 줄 296 def collection_descendants 어린이 = [] = _children = {} 까지 .비어 있나요? = = [] .각 do |자식| 다음 만약 [자식] # _id 가 nil이면 확장으로 표시하지 마세요. # _ids, nil ID를 가진 여러 내장된 문서가 비교됩니다. 일부 문서는 확장되지 않습니다. [자식] = true 만약 자식._id 어린이 << 자식 += 자식._children end end 어린이 end |
#flag_descendants_persisted ⇒ 배열<문서>
모든 하위 항목을 지속형으로 표시합니다.
322 323 324 325 326 |
# 파일 'lib/mongoid/traversable.rb', 줄 322 def flag_descendants_persisted _descendants.각 do |자식| 자식.new_record = 거짓 end end |
#유전성? ⇒ true | false
문서 가 다른 문서 의 하위 클래스인지 확인합니다.
334 335 336 |
# 파일 'lib/mongoid/traversable.rb', 줄 334 def 유전? self.클래스.유전? end |
#parentize(문서) ⇒ Document
하위/부모 연관 관계를 설정합니다. 이는 새로 생성된 객체에 사용되어 그래프 에 제대로 추가될 수 있습니다.
347 348 349 |
# 파일 'lib/mongoid/traversable.rb', 줄 347 def 부모화(문서) self._parent = 문서 end |
#remove_child(자식) ⇒ 객체
이 상위 문서에서 하위 문서 를 제거합니다. 임베드된 경우 nil로 설정하다 하고, 그렇지 않으면 임베드에서 many를 제거 합니다.
이는 RemoveEmbedded
지속성 명령에서 호출됩니다.
360 361 362 363 364 365 366 367 368 369 |
# 파일 'lib/mongoid/traversable.rb', 줄 360 def remove_child(자식) 이름 = 자식.association_name 만약 자식. 속성.삭제(자식._association.store_as) remove_ivar(이름) other 관계 = send(이름) 관계._remove(자식) end end |
#reset_persisted_descendants ⇒ 배열<문서>
하위 항목이 지속된 후에는 이를 호출하여 모든 변경 사항을 이동하고 한 번의 호출로 지속되는 것으로 플래그를 지정할 수 있습니다.
375 376 377 378 379 380 381 |
# 파일 'lib/mongoid/traversable.rb', 줄 375 def reset_persisted_descendants _descendants.각 do |자식| 자식.move_changes 자식.new_record = 거짓 end _reset_memoized_descendants! end |