내 질문은이 하나의 How to skip ActiveRecord callbacks?과 비슷하지만 AR 대신 Mongoid를 사용하고 있습니다. Mongoid의 현재 버전에서는 아직 구현되지 않은 것처럼 보이므로 어떤 멋진 솔루션을 사용해야하는지 알고 싶습니다. 그것을 구현하십시오. (필요하다면).몽고이 문서에서 콜백을 건너 뛰는 방법은 무엇입니까?
답변
예!
몽고 이드는 ActiveModel을 기반으로하며 ActiveModel은 skip_callback function입니다. 이 같은 skip_callback
사용할 수 있습니다
# skip the callback
MyModelClass.skip_callback(:save, :before, :ensure_foo_is_not_bar)
my_model_instance.update_attributes :foo => 'bar'
# restore the callback for future calls
MyModelClass.set_callback(:save, :before, :ensure_foo_is_not_bar)
내가 이것을 사용하고 차질없이 큰 응용 프로그램에서. 더 많은 정보를 원하시면, 제프 Kreeftmeijer하여이 블로그 게시물을 참조 :
http://jeffkreeftmeijer.com/2010/disabling-activemodel-callbacks/
아, 고마워! – jpemberthy
'u.save! (validate : false)'가'u.save! (callbacks : false)' –
고마워요. 당신이 유효성 검사를 끄는 것처럼 모든 콜백을 끄는 방법이 있다면 좋을 것입니다. , 내 테스트 스위트에서 콜백을 건너 뛰기위한이 작업. –
코드를 검색합니다. 그리고 Mongoid에서 콜백을 피할 방법이 없습니다. 버전 1.9 및 2.0 모두.
패치 나 기능 요청이 필요합니다.
고마워요, 예 2.0.0.beta도 검토 중이었고 건너 뛰기 콜백 지원이 없었습니다 ... AR이 어떻게 실행하는지보고 mongoid 버전에 구현해 봅시다. – jpemberthy
Mongoid 원자 연산 (설정, 해제 등)을 사용하는 것이 더 쉬울 수 있습니다이 할
http://mongoid.org/en/mongoid/docs/persistence.html#atomic
을 콜백을하지 말라.
편집 : Mongoid 3는 콜백을 실행하지 않는다고 말합니다. 나는 몽고이 2에서 그들에게 콜백 콜을하고있다. 그래서 YMMV
Mongoid 4에서도 잘 작동합니다. 계단식 콜백이 true로 설정된 부모 문서의 카운터를 가져 오는 방법을 알아 내려고 애쓰는 시간을 보냈습니다. – Dex
많은 양의 항목에 대해 모든 콜백을 실행하지 않고 업데이트를 수행하려는 경우에 종종 나타납니다. 드라이버에 내림차순으로 수행 할 수 있습니다.
'x'필드에서 'bar'로 'foo'를 바꾸십시오.
User.all.each do |u|
User.collection.where({ _id: u.id }).update({
"$set" => { :x => u.x.gsub('foo', 'bar')
})
end
나는 브라이언 암스트롱의 제안을 사용하여 간단하게 내 저장 후 콜백에서
person.set(name:"Robert Pulson")
를 호출 끝났다.
감사합니다 남자, 완벽한 +1 – rusllonrails
- 1. 특정보기로 건너 뛰는 방법은 무엇입니까?
- 2. after_update 콜백을 건너 뛰고
- 3. 보고서에서 빈 페이지를 건너 뛰는 방법은 무엇입니까?
- 4. 이 루프를 건너 뛰는 방법은 무엇입니까?
- 5. `foreach` 루프의 반복을 건너 뛰는 방법은 무엇입니까?
- 6. Drupal에서 함수를 건너 뛰는 방법은 무엇입니까?
- 7. 문자열을 분리하고 공백을 건너 뛰는 방법은 무엇입니까?
- 8. Android gps 거리를 건너 뛰는 방법은 무엇입니까?
- 9. javascript를 사용하여 필드를 건너 뛰는 방법은 무엇입니까?
- 10. __autoload를 사용하여 건너 뛰는 방법은 무엇입니까?
- 11. 글로브 건너 뛰는 파일
- 12. enum 캐스팅을 건너 뛰는 경우
- 13. 일부 코드가 건너 뛰는 이유는 무엇입니까?
- 14. array.shift가 값을 건너 뛰는 이유는 무엇입니까?
- 15. EnumChildWindows가 자식을 건너 뛰는 이유는 무엇입니까?
- 16. 종속 파일을 건너 뛰는 Maven?
- 17. GWTTestCase에서 테스트를 건너 뛰는 방법
- 18. 코드 라인을 건너 뛰는 프로그램
- 19. 바이트를 건너 뛰는 구조체의 필드
- 20. 난독 화를 건너 뛰는 SmartAssembly
- 21. Mnogosearch가 페이지를 건너 뛰는 중입니다
- 22. Access 2007에서 시작 폼을 건너 뛰는 방법은 무엇입니까?
- 23. Google 웹 로그 분석로드를 건너 뛰는 방법은 무엇입니까?
- 24. Maven reactor를 사용할 때 테스트를 건너 뛰는 방법은 무엇입니까?
- 25. Eclipse의 파일 검색에서 .svn-base 파일을 건너 뛰는 방법은 무엇입니까?
- 26. JVMTI : FollowReferences : Soft/Weak/Phantom 참조를 건너 뛰는 방법은 무엇입니까?
- 27. FTP Recursive ... 이미 파일이있는 경우 건너 뛰는 방법은 무엇입니까?
- 28. csv.DictReader로 프리 헤더 행을 건너 뛰는 방법은 무엇입니까?
- 29. Scala Actor에서 중복 메시지를 병합하거나 건너 뛰는 방법은 무엇입니까?
- 30. 마이그레이션을 수행 할 때 번들 업데이트를 건너 뛰는 방법은 무엇입니까?
Mongoid? Mongoid 1.9.0 또는 Mongoid 2.0.0.beta? – shingara