是否可以从事务块内重新引发ActiveRecord :: Rollbackexception?
在我的rails应用程序中,我在控制器的创建操作中有一个事务块,我尝试在其中创建两个记录。
def create ActiveRecord::Base.transaction do @foo = Foo.new(params[:foo].except(:bar)) raise ActiveRecord::Rollback unless @foo.save @bar = Bar.new(params[:foo][:bar]) raise ActiveRecord::Rollback unless @bar.save end end
我希望能够从Rollback中解救,这样我就可以返回一个错误,指出哪个保存失败了。
rescue ActiveRecord::Rollback => e @foo.errors = e if @foo.errors.blank? ensure respond_with @foo end
但是,我从未进入救援区。 我假设这是因为,正如rails文档所述,事务块会占用Rollbackexception并且不会重新引发它。 有没有办法强制重新引发此exception?
- 有没有办法在exception时启动Ruby调试器?
- 为什么在Ruby中,|| 当`a`未定义时,1会抛出错误,但a = a || 1会不会?
- 替代“救援exception”
- Rails用户:您使用什么exception通知软件?
- 在Ruby中重新分配常量时抛出exception?
- 如何在Rails中捕获整个应用程序的ArgumentError?
- Devise中的InvalidAuthenticityToken :: SessionsController#destroy(已经注销后退出)
- Hoptoad诉Exceptional诉exception_notification诉exception_logger案
- 设计身份validation – devise_error_messages! 在一个视图中导致nil的“未定义的方法`错误”:NilClass