2

私はRails 5のアソシエーションコールバックを使用しています。ドキュメントから、オブジェクトの削除をアソシエーションから中止したい場合、例外をスローする必要があります。例外をスローすると、before_removeを実行してサーバがクラッシュする

before_addコールバックが例外をスローすると、そのオブジェクトはコレクションに追加されません。同様に、before_removeコールバックが例外をスローすると、オブジェクトはコレクションから削除されません。

私はまさにそれをやっているが、サーバーがでクラッシュしている:

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

何が起こっているのどれでも手掛かりを:

UncaughtThrowError (uncaught throw :abort) 

これは私のコードがどのように見えるかですか? throw(:abort)は削除するオブジェクトを避けていますが、私は醜い500を取得します!

いくつかの参照:http://blog.bigbinary.com/2016/02/13/rails-5-does-not-halt-callback-chain-when-false-is-returned.html

+0

を参照してください

raise('abort') 

を使用する必要があるが、 'throw'が正しいことをあなたは確かにありますか?私はそれを見たことがない。私は通常 'raise'を使用します – Fallenhero

+0

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

+0

スローで解決できましたか?同じエラーが発生しています。しかし、私は他の場所でそれを使ってきたと確信しています。なぜ私はここでうまくいかないのですか? – Aakanksha

答えて

関連する問題