捕获的最佳方法:在Rails 5控制器中抛出中止信号

sam*_*ers 7 actioncontroller ruby-on-rails-5

在Rails 5中,当回调需要取消以后的回调时,建议的过程记录为"你应该明确地" throw :abort.

我的问题是:如何建议捕获此异常?

我目前的解决方案是抓住UncaughtThrowErrorApplicationController- 考虑到它的记录方式,我认为这个功能会触发Rails或Rack中间件中的一些魔法,以立即进入渲染(ActionView)阶段.

eka*_*mpp 1

以下是如何在 ruby​​ 中使用 throw/catch 的一些示例

对于 Rails,我认为这样的方法可以解决问题:

class SomeController 
  def some_method 
    if catch(:abort) { mode.save }
      # success
    else
      # failure 
    end
  end
end
Run Code Online (Sandbox Code Playgroud)