모듈: Mongoid::Interceptable
개요
이 모듈에는 Mongoid에 대한 모든 콜백 후크가 포함되어 있습니다.
상수 요약 접기
- 콜백 =
[ :after_build, :after_create, :after_destory, :after_find, :after_initialize, :after_save, :after_터치, :after_update, :after_upsert, :after_validation, :round_create, :round_destory, :round_save, :round_update, :round_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: []) ⇒ 객체
애프터 콜백을 실행합니다.
250 251 252 253 254 255 |
# 파일 'lib/mongoid/interceptable.rb', 250줄 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의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
내장된 문서에 대해 지정된 종류의 이전 콜백을 실행합니다.
229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 |
# 파일 'lib/mongoid/interceptable.rb', 229줄 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의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
내장된 문서에 대한 콜백을 실행합니다.
153 154 155 156 157 158 159 160 161 162 163 |
# 파일 'lib/mongoid/interceptable.rb', 153줄 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) ⇒ 객체
어라운드 콜백을 포함하여 내장된 문서에 대해 지정된 종류의 콜백을 실행합니다.
174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 |
# 파일 'lib/mongoid/interceptable.rb', 174줄 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의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
주변 콜백 없이 내장된 문서에 대해 지정된 종류의 콜백을 실행합니다.
207 208 209 210 211 212 213 214 215 216 217 218 |
# 파일 'lib/mongoid/interceptable.rb', 207줄 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
이 문서 에서 제공된 유형의 콜백 을 실행할 수 있나요?
62 63 64 |
# 파일 'lib/mongoid/interceptable.rb', 62줄 def 콜백 실행 가능?(kind) response_to?("_#{종류}_callbacks") end |
#in_callback_state?(type) ⇒ true | false
문서 가 현재 잠재적으로 콜백을 실행해야 할 수 있는 상태 인가요?
75 76 77 |
# 파일 'lib/mongoid/interceptable.rb', 75줄 def in_callback_state?(kind) [ :create, :destory ].포함?(kind) || new_record? || 플래그가 지정된_포_파괴? || 변경되었나요? end |
#Pending_callbacks ⇒ Array<Symbol>
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
나중에 실행되도록 저장된 콜백을 반환합니다.
262 263 264 |
# 파일 'lib/mongoid/interceptable.rb', 262줄 def 보류 중인_콜백 @pending_callbacks ||= [].to_set end |
#Pending_callbacks=(value) ⇒ Array<Symbol>
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
나중에 실행할 콜백을 저장합니다. 이에 대한 좋은 사용 사례 는 문서 에 연결이 설정하다 될 때까지 after_find 및 after_initialize 콜백을 지연하는 것입니다. 문서 에 기본값 적용을 지연하는 데에도 사용할 수 있습니다.
276 277 278 |
# 파일 'lib/mongoid/interceptable.rb', 276줄 def 보류 중인_콜백=(value) @pending_callbacks = value end |
#run_after_callbacks(* Kinds) ⇒ 객체
ActiveSupport는 기본적으로 이러한 유형의 동작을 허용하지 않으므로 Mongoid는 이를 우회하여 자체적으로 구현해야 합니다.
특정 이벤트 에 대한 사후 콜백만 실행합니다.
90 91 92 93 94 |
# 파일 'lib/mongoid/interceptable.rb', 90줄 def run_after_callbacks(*kinds) kinds.각 do |kind| run_targeted_callbacks(:after, kind) end end |
#run_before_callbacks(* Kinds) ⇒ 객체
ActiveSupport는 기본적으로 이러한 유형의 동작을 허용하지 않으므로 Mongoid는 이를 우회하여 자체적으로 구현해야 합니다.
특정 이벤트 에 대한 이전 콜백만 실행합니다.
107 108 109 110 111 |
# 파일 'lib/mongoid/interceptable.rb', 107줄 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) ⇒ 객체
문서에 대한 콜백을 실행합니다. 이는 플래그가 지정된 내장된 문서에 콜백을 계단식으로 호출하는 활성 지원의 기능을 재정의합니다.
127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# 파일 'lib/mongoid/interceptable.rb', 127줄 def run_callbacks(kind, with_children: true, skip_if: nil, &차단) 만약 skip_if&.전화하기. 반환 차단&.전화하기. end 만약 with_children cascadeable_children(kind).각 do |자식| 만약 자식.run_callbacks(Child_callback_type(kind, 자식), with_children: with_children) == 거짓 반환 거짓 end end end 만약 콜백 실행 가능?(kind) super(kind, &차단) other true end end |
#run_pending_callbacks ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
보류 중인 콜백을 실행합니다. 콜백 이 :apply_defaults인 경우 이 문서 에 기본값을 적용 합니다. 그렇지 않으면 콜백 이 run_callbacks 함수로 전달됩니다.
285 286 287 288 289 290 291 292 293 294 |
# 파일 'lib/mongoid/interceptable.rb', 285줄 def run_pending_callbacks 보류 중인_콜백.각 do |cb| 만약 [:apply_defaults, :apply_post_processed_defaults].포함?(cb) send(cb) other self.run_callbacks(cb, with_children: 거짓) end end 보류 중인_콜백.지우기 end |