2

Rails 5의 연관 콜백을 사용하고 있습니다. 이 문서에서 연관에서 객체 제거를 중단하려면 예외를 throw해야합니다.예외를 throw 할 때 before_remove를 사용하여 서버를 중단하면 오류가 발생합니다.

before_add 콜백에서 예외가 발생하면 객체가 컬렉션에 추가되지 않습니다. 마찬가지로 before_remove 콜백에서 예외가 발생하면 객체가 컬렉션에서 제거되지 않습니다.

나는 정확히하고 있어요했으나 서버와 충돌한다 :

UncaughtThrowError (uncaught throw :abort) 

이 내 코드가 같은 모습입니다 : 무슨 일이 일어나고 있는지

def can_remove_association(object) 
    return unless object.condition 
    errors[:base] << "Can't be removed." 
    throw(:abort) 
end 

어떤 단서? throw(:abort)은 제거 할 개체를 피하고 있지만 추한 500 개를 얻습니다!

일부 참조 : http://blog.bigbinary.com/2016/02/13/rails-5-does-not-halt-callback-chain-when-false-is-returned.html

+0

당신이 throw'가 올바른지'확실하다? 나는 그것을 본 적이 없다. 보통'raise'를 사용합니다 – Fallenhero

+0

https://ruby-doc.org/core-2.4.0/Kernel.html#method-i-throw – Fallenhero

+0

던지기를 사용하여 해결할 수 있었습니까? 같은 오류가 발생합니다. 그러나 나는 그것을 다른 곳에서 사용해 왔고, 왜 우둔한 지 모르겠다. 왜 여기에서 일하지 않는가. – Aakanksha

답변

관련 문제