【问题标题】:before_remove to abort removal crashes server when throwing exceptionbefore_remove 在抛出异常时中止删除使服务器崩溃
【发布时间】:2017-01-19 13:30:25
【问题描述】:

我正在使用 Rails 5 的关联回调。我在文档中读到,如果要中止从关联中删除对象,则必须抛出异常:

如果 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

【问题讨论】:

  • 您确定throw 是正确的吗?我从来没有见过。我通常使用raise
  • 你能用 throw 解决它吗?我遇到了同样的错误。但我确定我已经在其他地方使用过它,我不知道为什么它在这里不起作用。

标签: ruby-on-rails activerecord rails-activerecord ruby-on-rails-5


【解决方案1】:

【讨论】:

  • 我刚刚对其进行了测试,但无法正常工作?,用更多信息编辑了我的问题。
猜你喜欢
  • 2022-09-30
  • 2018-04-13
  • 1970-01-01
  • 2013-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-11
相关资源
最近更新 更多