4

반복되는 경우 has_many 요소의 저장을 (정상적으로) 취소하려고합니다. 이것이 내 뜻입니다 :before_add 연관 콜백에서 저장을 취소하려면 어떻게합니까?

class AdmininstratorRole < ActiveRecord::Base 
    has_many :permissions, before_add: :avoid_repetition 

    def avoid_repetition(permission) 
    raise "Repeated Permission" if self.permissions.where(klass: permission.klass, action: permission.action).count > 0 
    end 
end 

관련 콜백이 아니면 거짓을 반환하여 저장을 취소 할 수 있습니다. 그러나 연결된 콜백 이후로 나는 here으로 설명 된대로 절약을 취소하기 위해 예외를 발생시켜야합니다. 문제는 그 예외로부터 정상적으로 복구하는 방법을 모른다는 것입니다.

어떤 아이디어 ???

답변

0

권한 역할을 추가하는 모든 코드에서 예외를 catch해야합니다.

그러나 추가하기 전에 권한이 있는지 확인하고 싶을 수 있습니다.

관련 문제