모듈: Mongoid::Interceptable
개요
이 모듈에는 Mongoid에 대한 모든 콜백 후크가 포함되어 있습니다.
상수 요약 접기
- 콜백 =
%i[ after_build after_create after_destory after_find after_initialize after_save after_터치 after_update after_upsert after_validation 주위에 만들기 주위에_destory 주위에 저장 주위에_업데이트 주위에_upsert before_create before_destory before_save before_update before_upsert before_validation ].동결
인스턴스 메서드 요약 접기
-
#_mongoid_run_child_after_callbacks(callback_list: []) ⇒ 객체
애프터 콜백을 실행합니다.
-
#_mongoid_run_child_before_callbacks( 종류, 자식: [], 콜백 목록: []) ⇒ 객체
비공개
내장된 문서에 대해 지정된 종류의 이전 콜백을 실행합니다.
-
#_mongoid_run_child_callbacks(type, 하위: nil, &block) ⇒ 객체
비공개
내장된 문서에 대한 콜백을 실행합니다.
-
#_mongoid_run_child_callbacks_with_round( 종류, 자식: nil, &block) ⇒ 객체
어라운드 콜백을 포함하여 내장된 문서에 대해 지정된 종류의 콜백을 실행합니다.
-
#_mongoid_run_child_callbacks_without_round( 종류, 자식: nil, &block) ⇒ 객체
비공개
주변 콜백 없이 내장된 문서에 대해 지정된 종류의 콜백을 실행합니다.
-
#콜백_실행 파일?(type) ⇒ true | false
제공된 유형의 콜백이 이 문서에서 실행 가능한가요?
-
#in_callback_state?(type) ⇒ true | false
문서가 현재 콜백을 실행해야 할 수 있는 상태인가요?
-
#Pending_callbacks ⇒ Array<Symbol>
비공개
나중에 실행되도록 저장된 콜백을 반환합니다.
-
#Pending_callbacks=(value) ⇒ Array<Symbol>
비공개
나중에 실행할 콜백을 저장합니다.
-
#run_after_callbacks(* Kinds) ⇒ 객체
특정 이벤트 에 대한 사후 콜백만 실행합니다.
-
#run_before_callbacks(* Kinds) ⇒ 객체
특정 이벤트 에 대한 이전 콜백만 실행합니다.
-
#run_callbacks( Kind, with_children: true, skip_if: nil, &block) ⇒ 객체
문서에 대한 콜백을 실행합니다.
-
#run_pending_callbacks ⇒ 객체
비공개
보류 중인 콜백을 실행합니다.
인스턴스 메서드 세부 정보
#_mongoid_run_child_after_callbacks(callback_list: []) ⇒ 객체
애프터 콜백을 실행합니다.
247 248 249 250 251 252 |
# 파일 'lib/mongoid/interceptable.rb', 247줄 def _mongoid_run_child_after_callbacks(콜백 목록: []) 콜백 목록.reverse_each do |Next_sequence, env| Next_sequence.invoke_after(env) 반환 거짓 만약 env.중단됨 end end |
#_mongoid_run_child_before_callbacks( 종류, 자식: [], 콜백 목록: []) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
내장된 문서에 대해 지정된 종류의 이전 콜백을 실행합니다.
225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 |
# 파일 'lib/mongoid/interceptable.rb', 225줄 def _mongoid_run_child_before_callbacks(kind, 자식: [], 콜백 목록: []) 어린이.각 do |자식| 체인 = 자식.__콜백[Child_callback_type(kind, 자식)] env = ActiveSupport::콜백::필터::환경.신규(자식, 거짓, nil) Next_sequence = compile_callbacks(체인) 하지 않는 한 Next_sequence.final? 몽고이드.로거.경고("내장된 문서에는 어라운드 콜백이 비활성화되어 있습니다.#{자식.클래스.이름}에대한 콜백 어라운드 건너뛰기") 몽고이드.로거.경고(내장된 문서에 대한 어라운드 콜백을 활성화 하려면 Mongoid::Config.round_callbacks_for_embeds를 true로 설정하다 . ') end Next_sequence.invoke_before(env) 반환 거짓 만약 env.중단됨 env.value = !env.중단됨 콜백 목록 << [ Next_sequence, env ] end 콜백 목록 end |
#_mongoid_run_child_callbacks(type, 하위: nil, &block) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
내장된 문서에 대한 콜백을 실행합니다.
148 149 150 151 152 153 154 155 156 157 158 |
# 파일 'lib/mongoid/interceptable.rb', 148줄 def _mongoid_run_child_callbacks(kind, 자식: nil, &차단) 만약 몽고이드::Config. _mongoid_run_child_callbacks_with_round(kind, 자식: 어린이, &차단) other _mongoid_run_child_callbacks_without_round(kind, 자식: 어린이, &차단) end end |
#_mongoid_run_child_callbacks_with_round( 종류, 자식: nil, &block) ⇒ 객체
어라운드 콜백을 포함하여 내장된 문서에 대해 지정된 종류의 콜백을 실행합니다.
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 |
# 파일 'lib/mongoid/interceptable.rb', 169줄 def _mongoid_run_child_callbacks_with_round(kind, 자식: nil, &차단) 어린이 ||= cascadeable_children(kind) with_children = !몽고이드::Config. 반환 차단&.전화하기. 만약 어린이.비어 있나요? 섬유 = 어린이.map do |자식| 파이버.신규 do 자식.run_callbacks(Child_callback_type(kind, 자식), with_children: with_children) do 파이버.yield end end end 섬유.각 do |파이버| 파이버.재개 올리다 몽고이드::오류::InvalidAroundCallback 하지 않는 한 파이버.alive? end 차단&.전화하기. 섬유.reverse.각(&:resume) end |
#_mongoid_run_child_callbacks_without_round( 종류, 자식: nil, &block) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
주변 콜백 없이 내장된 문서에 대해 지정된 종류의 콜백을 실행합니다.
202 203 204 205 206 207 208 209 210 211 212 213 214 |
# 파일 'lib/mongoid/interceptable.rb', 202줄 def _mongoid_run_child_callbacks_without_round(kind, 자식: nil, &차단) 어린이 ||= cascadeable_children(kind) 콜백 목록 = _mongoid_run_child_before_callbacks(kind, 자식: 어린이) 반환 거짓 만약 콜백 목록 == 거짓 value = 차단&.전화하기. 콜백 목록.각 do |_next_sequence, env| env.value &&= value end 반환 거짓 만약 _mongoid_run_child_after_callbacks(콜백 목록: 콜백 목록) == 거짓 value end |
#콜백_실행 파일?(type) ⇒ true | false
이 문서 에서 제공된 유형의 콜백 을 실행할 수 있나요?
60 61 62 |
# 파일 'lib/mongoid/interceptable.rb', 60줄 def 콜백 실행 가능?(kind) response_to?("_#{종류}_callbacks") end |
#in_callback_state?(type) ⇒ true | false
문서 가 현재 잠재적으로 콜백을 실행해야 할 수 있는 상태 인가요?
73 74 75 |
# 파일 'lib/mongoid/interceptable.rb', 73줄 def in_callback_state?(kind) %i[create 파괴].포함?(kind) || new_record? || 플래그가 지정된_포_파괴? || 변경되었나요? end |
#Pending_callbacks ⇒ Array<Symbol>
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
나중에 실행되도록 저장된 콜백을 반환합니다.
259 260 261 |
# 파일 'lib/mongoid/interceptable.rb', 259줄 def 보류 중인_콜백 @pending_callbacks ||= [].to_set end |
#Pending_callbacks=(value) ⇒ Array<Symbol>
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
나중에 실행할 콜백을 저장합니다. 이에 대한 좋은 사용 사례 는 문서 에 연결이 설정하다 될 때까지 after_find 및 after_initialize 콜백을 지연하는 것입니다. 문서 에 기본값 적용을 지연하는 데에도 사용할 수 있습니다.
273 274 275 |
# 파일 'lib/mongoid/interceptable.rb', 273줄 def 보류 중인_콜백=(value) @pending_callbacks = value end |
#run_after_callbacks(* Kinds) ⇒ 객체
ActiveSupport는 기본적으로 이러한 유형의 동작을 허용하지 않으므로 Mongoid는 이를 우회하여 자체적으로 구현해야 합니다.
특정 이벤트 에 대한 사후 콜백만 실행합니다.
88 89 90 91 92 |
# 파일 'lib/mongoid/interceptable.rb', 88줄 def run_after_callbacks(*kinds) kinds.각 do |kind| run_targeted_callbacks(:after, kind) end end |
#run_before_callbacks(* Kinds) ⇒ 객체
ActiveSupport는 기본적으로 이러한 유형의 동작을 허용하지 않으므로 Mongoid는 이를 우회하여 자체적으로 구현해야 합니다.
특정 이벤트 에 대한 이전 콜백만 실행합니다.
105 106 107 108 109 |
# 파일 'lib/mongoid/interceptable.rb', 105줄 def run_before_callbacks(*kinds) kinds.각 do |kind| run_targeted_callbacks(:before, kind) end end |
#run_callbacks( Kind, with_children: true, skip_if: nil, &block) ⇒ 객체
문서 에 대한 콜백을 실행합니다. 이는 플래그가 지정된 내장된 문서에 콜백을 계단식으로 호출하는 활성 지원의 기능을 재정의합니다.
125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
# 파일 'lib/mongoid/interceptable.rb', 125줄 def run_callbacks(kind, with_children: true, skip_if: nil, &차단) 반환 차단&.전화하기. 만약 skip_if&.전화하기. 만약 with_children cascadeable_children(kind).각 do |자식| 반환 거짓 만약 자식.run_callbacks(Child_callback_type(kind, 자식), with_children: with_children) == 거짓 end end 만약 콜백 실행 가능?(kind) super(kind, &차단) other true end end |
#run_pending_callbacks ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
보류 중인 콜백을 실행합니다. 콜백 이 :apply_defaults인 경우 이 문서 에 기본값을 적용 합니다. 그렇지 않으면 콜백 이 run_callbacks 함수로 전달됩니다.
282 283 284 285 286 287 288 289 290 291 |
# 파일 'lib/mongoid/interceptable.rb', 282줄 def run_pending_callbacks 보류 중인_콜백.각 do |cb| 만약 %i[apply_defaults apply_post_processed_defaults].포함?(cb) send(cb) other run_callbacks(cb, with_children: 거짓) end end 보류 중인_콜백.지우기 end |