Rails事物Transaction_Ruby_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > Ruby > Rails事物Transaction

Rails事物Transaction

 2014/4/17 13:16:47  wudixiaotie  程序员俱乐部  我要评论(0)
  • 摘要:以前用.net和Oracle常常用到Transation,目的是在进行复杂的数据库逻辑时保证中间某一环节出错后,数据回复原状,不会产生错误数据。在Rails中也有Transation:ActiveRecord::Base.transactiondodavid.withdrawal(100)mary.deposit(100)end这代码的目的就是从david的账户扣100,把钱给mary的账户,如果中间raise异常,rails会吧数据库的操作恢复原状,但有个缺点,model的数据不会被恢复
  • 标签:rails

?以前用.net和Oracle常常用到Transation,目的是在进行复杂的数据库逻辑时保证中间某一环节出错后,数据回复原状,不会产生错误数据。

在Rails中也有Transation:

class="ruby">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就能解决了。

发表评论
用户名: 匿名