2013-12-17 1 views
1

학과, 코스, 학생 수업.레일즈는 외래 키 제약 조건을 가진 객체를 삭제할 수 있는지 확인합니다.

부서 및 코스가 foreign_key 제약 조건을 삭제했습니다. 부서를 삭제하면 해당 부서를 모두 삭제해야합니다. 그러나 코스에 학생이 배정 된 경우 코스를 삭제할 수 없습니다. 의미, 부서는 차례로 삭제할 수 없습니다.

이제 인덱스 페이지에 삭제 링크를 표시하려면 부서를 삭제할 수 있는지 확인해야합니다. 모든 과목을 질의하지 않고도 학생들이 배정되었는지 확인할 수있는 방법이 있습니까? 문제는 수백 개의 부서를 표시해야한다는 것입니다. 그리고 각각의 삭제 링크를 보여주기 위해 나는 많은 것을 질의 할 필요가있다.

답변

0

이 상황을 처리하는 가장 좋은 방법은 항상 삭제 키를 표시하고 부서가 삭제 될 수 있는지 확인할 수있는 before_destroy ActiveRecord 콜백을 추가하는 것입니다.

삭제할 수있는 링크 만 표시되도록하려면 삭제 링크를 표시하려면 코스의 클래스와 부서 클래스의 메소드로 체크를 분리하는 것이 좋습니다. abbed the Law of Demeter

0

우리는 끊임없이 파괴 된 링크를 보여줌으로써 해결했습니다. 그리고 링크를 클릭하면, 삭제할 아약스 호출이 트리거됩니다. 데이터베이스에 외래 키 제약 조건이있는 경우이를 포착하여 삭제할 수없는 사용자를 표시합니다.

제약 조건을 확인하는 DB 쿼리에는 불필요합니다 ...