我需要在票据和用户表中创建一行...我只需要知道如何处理事务失败的情况。ActiveRecord事务中的错误处理?
@ticket.transaction do
@ticket.save!
@user.save!
end
#if (transaction succeeded)
#.....
#else (transaction failed)
#......
#end
在一个侧面说明我只是想感谢大家谁在堆栈溢出参与帮助设计人员了解更多的编程...我很欣赏你们拿出你一天的时间来回答这样的n00b问题这:)
非常感谢Matt,我很感谢:) – Kevin 2009-12-21 06:54:23
像第一个代码片段(没有抛出异常)的事务根本不是Rails事务。 类似于第二个代码片段的事务应该解救所有异常(rescue => e),处理失败,并且可能再次引发相同的异常。 – Ando 2012-12-08 18:27:27
对不起Ando,但它显然是一个ActiveRecord交易,如“交易”方法所证明。事务的突出之处在于,如果第二个操作失败,则第一个操作(保存故障单)将回滚。这是新开发人员的一个非常基本的例子......显然,人们会用失败处理来替换注释。感谢您分享您关于错误处理的观点,但例子来自Rails的初始作者写的“用Rails进行敏捷Web开发”。所以我会认为你的特征不会抛出异常,因为不是Rails – MattMcKnight 2012-12-08 22:21:51