且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Rails的:异常的after_create停止保存

更新时间:2023-01-26 19:08:39

是的,回调都是在一个事务包裹起来。

Yes, the callbacks are all wrapped up in a transaction.

基本上,以下将导致回退:

Basically, the following will cause a rollback:

  • before_save 返回false或类似的回调
  • 异常 before_save 或类似的回调
  • 异常 after_save的或类似的回调(after_create)
  • return false from before_save or similar callbacks
  • exception in before_save or similar callbacks
  • exception in after_save or similar callbacks (after_create)

下面不会导致回滚:

  • after_save的返回false或类似的回调
  • 异常 after_commit
  • return false from after_save or similar callbacks
  • exception in after_commit

如果你不想异常引起回滚,使用 after_commit

If you don't want an exception to cause a rollback, use after_commit

  • 参考:http://webonrails.com/2012/08/28/activerecord-after_commit-hook/
  • 附加参考:http://guides.rubyonrails.org/v3.1.3/active_record_validations_callbacks.html#transaction-callbacks
  • Reference: http://webonrails.com/2012/08/28/activerecord-after_commit-hook/
  • Additional reference: http://guides.rubyonrails.org/v3.1.3/active_record_validations_callbacks.html#transaction-callbacks