2014-09-02 1 views
0

여러 모델에 대한 표시 오류, 그래서 내 컨트롤러 액션은 다음과 같습니다레일 : 나는 사용자가 동시에 여러 레코드를 만들 수있는 상황이

if Unit.create multiple_unit_params.values 
    redirect_to units_path 
    else 
    render :new 
    end 

검증이 중 어느 하나에 실패 할 수 있습니다 기록. 그렇다면 여러 레코드가 있기 때문에 어떤 레코드 유효성 검사가 실패했는지 모르는 경우 뷰에 오류를 어떻게 렌더링해야합니까?

답변

0

이것을 극복하는 한 가지 방법은 예외를 발생시키는 create! 메서드를 사용하는 것입니다. 예외 오브젝트에는 실패한 모델에 대한 정보가 들어 있습니다.

내가 사용하는 경향이 패턴은 다음과 같습니다

def create 
    @unit = Unit.new(multiple_unit_params.values) 

    @unit.save! 

    redirect_to(units_path) 

rescue ActiveRecord::RecordInvalid => e 
    # ... Deal with exception 
end 

여러 기록을 만드는 경우 일부 생성과 당신이 끝나지 않도록, 트랜잭션에 일부 창조되지를 그 캡슐화 할 수 있습니다 . 그것은 전부 아니면 전혀 없을 것입니다. 예외는 트랜잭션을 자동으로 해제합니다.

관련 문제