Rails事物Transaction
程序员文章站
2022-07-15 12:52:11
...
以前用.net和Oracle常常用到Transation,目的是在进行复杂的数据库逻辑时保证中间某一环节出错后,数据回复原状,不会产生错误数据。
在Rails中也有Transation:
ActiveRecord::Base.transaction do david.withdrawal(100) mary.deposit(100) end
这代码的目的就是从david的账户扣100,把钱给mary的账户,如果中间raise异常,rails会吧数据库的操作恢复原状,但有个缺点,model的数据不会被恢复,解决这个问题用如下方法:
ActiveRecord::Base.transaction(david, mary) do david.withdrawal(100) mary.deposit(100) end
把需要回滚的model作为参数传递给transaction就能解决了。
上一篇: Rails flash