모듈: Mongoid::Touchable::InstanceMethods
- 포함 항목:
- 문서
- 다음에 정의됨:
- lib/mongoid/contactable.rb
개요
ActiveSupport::Concern을 사용하여 리팩터링
믹스인 기능을 제공하는 데 사용됩니다.
인스턴스 메서드 요약 접기
-
#_clear_contact_updates(필드 = nil) ⇒ 객체
비공개
터치 작업으로 인한 모델 변경 사항을 지웁니다.
-
#_gather_contact_updates(현재, 필드 = nil) ⇒ Hash<string, Time>
비공개
현재 문서 와 각 상위 문서(루트 노드 포함)에 터치 가능한 필드를 재귀적으로 설정합니다.
-
#_run_contact_callbacks_from_root ⇒ 객체
비공개
루트 문서 부터 시작하여 각 연속 하위 문서 를 통해 계단식으로 문서 와 해당 상위 문서에 대해 :터치 콜백을 재귀적으로 실행합니다.
-
#_터치 가능_부모? ⇒ 부울
비공개
상위 항목이 존재하고 터치 가능한지 여부를 나타냅니다.
-
#억제 _터치_콜백 ⇒ 객체
비공개
차단 기간 동안 이 모듈을 포함하는 클래스에 대해 터치 콜백 호출을 억제합니다.
-
#터치(필드 = nil) ⇒ true/false
문서 를 터치하면 사실상 updated_at 타임스탬프와 제공된 필드 가 현재 시간으로 업데이트됩니다.
-
#Touch_callbacks_suppressed? ⇒ true | false
비공개
이 모듈을 포함하는 클래스에 대해 터치 콜백이 억제되는지 여부를 쿼리합니다.
인스턴스 메서드 세부 정보
#_clear_contact_updates(필드 = nil) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
터치 작업으로 인한 모델 변경 사항을 지웁니다.
93 94 95 96 97 |
# 파일 'lib/mongoid/contactable.rb', 줄 93 def _clear_touch_updates(필드 = nil) remove_change(:updated_at) remove_change(필드) 만약 필드 _parent._clear_touch_updates 만약 _contactable_parent? end |
#_gather_contact_updates(현재, 필드 = nil) ⇒ Hash<string, Time>
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
현재 문서 와 각 상위 문서(루트 노드 포함)에 터치 가능한 필드를 재귀적으로 설정합니다. 루트 문서 에서 수행할 결합된 원자적 $ 설정하다 연산을 반환합니다.
75 76 77 78 79 80 81 82 83 84 85 86 |
# 파일 'lib/mongoid/contactable.rb', 줄 75 def _gather_touch_updates(지금, 필드 = nil) 반환 만약 Touch_callbacks_suppressed? 필드 = database_field_name(필드) write_attribute(:updated_at, 지금) 만약 response_to?("updated_at=") write_attribute(필드, 지금) 만약 필드 터치 = _extract_contactes_from_atomic_sets(필드) || {} 터치.병합!(_parent._gather_touch_updates(지금) || {}) 만약 _contactable_parent? 터치 end |
#_run_contact_callbacks_from_root ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
루트 문서 부터 시작하여 각 연속 하위 문서 를 통해 계단식으로 문서 와 해당 상위 문서에 대해 :터치 콜백을 재귀적으로 실행합니다.
104 105 106 107 108 |
# 파일 'lib/mongoid/contactable.rb', 줄 104 def _run_contact_callbacks_from_root 반환 만약 Touch_callbacks_suppressed? _parent._run_contact_callbacks_from_root 만약 _contactable_parent? run_callbacks(:터치) end |
#_터치 가능_부모? ⇒ 부울
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
상위 항목이 존재하고 터치 가능한지 여부를 나타냅니다.
113 114 115 |
# 파일 'lib/mongoid/contactable.rb', 줄 113 def _contactable_parent? _parent && _association&.inverse_association&.터치 가능? end |
#억제 _터치_콜백 ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
차단 기간 동안 이 모듈을 포함하는 클래스에 대해 터치 콜백 호출을 억제합니다.
22 23 24 |
# 파일 'lib/mongoid/contactable.rb', 줄 22 def 억제_터치_콜백 터치 가능.억제_터치_콜백(self.클래스.이름) { yield } end |
#터치(필드 = nil) ⇒ true/false
해당 옵션이 설정하다 되어 있으면 연결이 자동으로 빌드되지 않습니다.
문서 를 터치하면 사실상 updated_at 타임스탬프와 제공된 필드 가 현재 시간으로 업데이트됩니다. 터치 옵션이 있는 associated_to 연관 관계가 존재하는 경우, 해당 연관 관계도 업데이트됩니다.
51 52 53 54 55 56 57 58 59 60 61 62 63 |
# 파일 'lib/mongoid/contactable.rb', 줄 51 def 터치(필드 = nil) 반환 거짓 만약 _root.new_record? 시작 터치 = _gather_touch_updates(시간.Current, 필드) _root.send(:persist_atomic_operations, '$set' => 터치) 만약 터치.현재? _run_contact_callbacks_from_root 보장 _clear_touch_updates(필드) end true end |
#Touch_callbacks_suppressed? ⇒ true | false
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
이 모듈을 포함하는 클래스에 대해 터치 콜백이 억제되는지 여부를 쿼리합니다.
32 33 34 |
# 파일 'lib/mongoid/contactable.rb', 줄 32 def Touch_callbacks_suppressed? 터치 가능.Touch_callbacks_suppressed?(self.클래스.이름) end |