私は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を取得します!
を参照してください
を使用する必要があるが、 'throw'が正しいことをあなたは確かにありますか?私はそれを見たことがない。私は通常 'raise'を使用します – Fallenhero
https://ruby-doc.org/core-2.4.0/Kernel.html#method-i-throw – Fallenhero
スローで解決できましたか?同じエラーが発生しています。しかし、私は他の場所でそれを使ってきたと確信しています。なぜ私はここでうまくいかないのですか? – Aakanksha