예를 들어 크기, 치수, 유형 등과 같은 모든 유효성 검사를 통과 한 이미지가 있지만이를 처리해야하는 경우 알 수없는 이유로 ImageMagick에서 오류가 발생합니다. 어떻게해야합니까? 그걸 처리해? Active Record Validations and Callbacks Guide 가입일유효성 검사 후에 before_save 파일을 처리하는 중에 오류가 발생하면 예외를 발생 시키거나 false를 반환하고 오류를 추가해야합니까?
4
A
답변
12
:
임의 전에 콜백 방법 정확히
false
반환하거나 예외, 실행 체인이 정지 도착을 제기하고 ROLLBACK가 발행되면 [...]
따라서 예외 버블을 ActiveRecord에 넣거나 직접 트랩하여 응용 프로그램의 컨텍스트 내에서 의미있는 것으로 변환하고 false
을 반환 할 수 있습니다. 이런 일이 적합 할 수 있습니다, 그래서 당신은 before_save
콜백 내에서 오류를 등록 할 수 있습니다 :
before_save :do_magick_things
private
def do_magick_things
# ImageMagick stuff...
true
rescue ImageMagickError, FatalImageMagickError => e
errors.add(:base, 'Some sort of sensible version of e.message')
false
end
당신은 트래핑과 do_magick_things
에서와 ImageMagick이 예외를 (번역 최종 사용자에게 의미가 무엇인가에 ImageMagick이 오류를 번역 할 수있는 경우 아마도 가장 의미가있을 것입니다. 예외를 오류 메시지로 변환하면 호출자는 예외를 원할 경우 save!
을 사용하고 그렇지 않은 경우 save
을 사용할 수 있습니다.
관련 문제
- 1. C# : 예외를 발생 시키거나 throw합니까?
- 2. before_save 연관 콜백에 유효성 검사 오류를 추가하려면 어떻게해야합니까?
- 3. 올바른 유효성 검사 오류가 발생 했습니까?
- 4. 'CombinedScript'에서 ASP.NET 유효성 검사 오류가 발생 했습니까?
- 5. 다른 탭에서 유효성 검사 오류가 발생하면 오류가 발생했습니다.
- 6. 값을 반환하고 예외를 throw합니까?
- 7. 오류가 발생하면 예외를 무시할 수 있습니까?
- 8. 오류가 발생하면 프로그램을 종료하십시오.
- 9. ASP.NET MVC3 요청 유효성 검사 예외를 모델 또는 속성 유효성 검사 오류로 처리하는 방법
- 10. Page_ClientValidate는 false를 반환하지만 유효성 검사기에 오류가 없습니다.
- 11. 이동 중에 입력 유효성 검사
- 12. SetupDiGetClassDescription은 FALSE를 반환하고 오류 0xE0000206을 설정합니다.
- 13. 유효성 검사 오류를 수정 한 후 Silveright 유효성 검사가 예외를 throw합니다.
- 14. XSLT 유효성 검사 오류가
- 15. XSD에 대한 XML 유효성 검사 중에 오류가 발생했습니다
- 16. ASP.NET 텍스트 상자에서 JQuery 유효성 검사 오류가 발생 했습니까?
- 17. swank-clojure를 사용하는 중에 오류가 발생하면 오류가 계속 발생합니다.
- 18. 클래스 데이터 유효성 검사
- 19. 레일 3에서 폼 유효성 검사 오류가 발생했습니다
- 20. 유효성 검사 오류가 발생했을 때 Silverlight DataGrid에서 편집을 취소하려면 어떻게해야합니까?
- 21. freemarker에서 유효성 검사 오류가 발생했습니다
- 22. 예외를 던진 후에 휴식해야합니까?
- 23. 유효성 검사 후 자바 스크립트 이벤트 발생
- 24. 레일 : 유효성 검사 중 가상 속성 판독기 오류 발생
- 25. Git Clone을 다운로드하는 중에 오류가 발생 했습니까?
- 26. Asp.Net 웹 서비스 : 403 오류를 반환하고 싶습니다.
- 27. mvc3에서 여러 유효성 검사 요약을 처리하는 방법
- 28. 레일 및 클립으로 첨부 파일을 처리하고 유효성 검사 오류를 처리합니다.
- 29. validate.Custom live false를 사용하여 false를 반환하고 true를 반환합니다.
- 30. 레일 유효성 검사 allow_nil이 예외를 던졌습니다
그래서 before_save에 오류를 추가하는 것은 "anti-pattern"이 아닙니다. 알았어, 고마워. – Zequez
@ Zequez : 안티 패턴이라고 생각하지 않습니다. 단지 'before_save'를 검증에 사용하지 마십시오. –
알지만, 어떤 이유로 인해 오류 객체가 유효성 검사 오류에만 사용되어야한다고 생각합니다. – Zequez