2

我正在使用Rails 5的關聯回調。我在文檔中看到,如果你想中止從關聯中刪除對象,你必須拋出異常: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

您是否可以使用throw解決它?我收到了同樣的錯誤。但我確定我在其他地方使用過它,而且我很笨,爲什麼它不在這裏工作。 – Aakanksha

回答