모델에서 언제`save`와`save!`를 사용해야합니까?
당신의 머리 를 세이브 뱅 에 따르면 , 액티브 레코드는 당신을 미치게 할 것입니다 , 우리는 예외적 인 상황에서 사용 save!
과 rescue
관용구를 피해야 합니다. 이를 감안할 때 모델이 @post.mark_rejected
.
mark_rejected
아래 문제 중 하나로 인해 코드가 실패하면 예외가 발생해야합니까? :
- 유효성 검사 문제가있는 경우
- nullable이 아닌 필드에 null이 할당 된 경우
- 데이터베이스 연결이 끊어진 경우
예외를 throw하지 않으면 다음과 같습니다.
- 컨트롤러 작업은 반환 값을 확인
mark_rejected
해야 할 것입니다. - 우리는 그 메소드 호출에서 예외를 기대하지 않습니다. 그래서 우리는
rescue
컨트롤러 액션에 절을 작성하지 않습니다 . 따라서 예외는 (..wherever ..)까지 버블 링되고 아마도 (500 HTTP?) 오류로 나타날 것입니다.
예제 코드 :
def mark_rejected
...
save!
end
또는
def mark_rejected
...
save
end
예외에 더 많은 오버 헤드가 있으므로 특히 .NET의 경우와 같이 자주 발생할 것으로 예상되는 경우 성능 문제가 있습니다 save
.
예외를 구하는 것보다 반환 값이 거짓인지 확인하는 코드 줄이 적기 때문에 이미 예외를 구해야하는 경우 반환 값을 확인해야하는 문제가 무엇인지 알 수 없습니다. 던져진 예외 save!
가 실제로 얼마나 자주 호출 스택을 버블 업해야합니까? 내 경험상 드물게.
호출시 예외가 발생하는 경우 save
와 반대로 save!
500 오류 페이지를 표시해야합니다. 복구 불가능하고 알 수없는 예기치 않은 내부 서버 오류입니다.
save!
성공하지 못하면 오류가 발생합니다.
save
true 또는 false와 같은 부울 값을 반환합니다.
제안 : save
마지막 줄에있을 때 사용 하십시오. save!
그렇지 않으면.
아이디어 : 메서드가 저장 결과를 반환하는 경우 예외를 throw해서는 안되며 호출자가 저장 문제를 처리하도록해야하지만 저장이 모델 메서드 논리 내에 묻혀 있으면 실패시 예외와 함께 프로세스를 중단하고 싶을 것입니다.
참고 URL : https://stackoverflow.com/questions/5056385/when-to-use-save-vs-save-in-model
'programing' 카테고리의 다른 글
PHP에서 동적 정적 메서드 호출? (0) | 2020.12.10 |
---|---|
보이는 테이블 행 수를 계산하는 jquery 선택기? (0) | 2020.12.10 |
Eclipse 프로젝트에서 Log4j.properties를 넣을 올바른 위치는 어디에 있습니까? (0) | 2020.12.10 |
터치 이벤트 지원에만 jQuery Mobile을 사용하는 방법 (UI 향상 없음)? (0) | 2020.12.10 |
JavaFX 2.1 TableView 새로 고침 항목 (0) | 2020.12.10 |