Rails的transaction

今天同事问我关于rails transaction,如果有多个不同表回滚,如何做。我告诉他,就嵌套着写多个transaction,而且十分坚定的告诉他:只写一个是绝对绝对不行的!我以前遇到过,多表回滚的问题,后来就是这样解决的!
同事表示怀疑,去看api,告诉我,我错了,我当时怒了,不可能吧!
经过讨论,又看完api,一起做了一个小测试,证明我确实错了。
很久以前,其实我也不是很明白多表回滚如何实现,记得当时写过一个多表保存,要求有回滚。发现数据更新时有问题,找不到原因。我以为是多表回滚失败导致的,后来看了下面的帖子。[url]http://www.iteye.com/problems/18595[/url]google,搜索“rails,多表事务”,第一页第一个就是(JE的SEO做的还是不错的)。当时照着这个方法,加上嵌套的transaction,修改后,测试没问题。所以对此法深信不疑。其实当时的的错误并没有修改,而是没有测试到。
关于rails的多表回滚,只要写一个就可以。api解释如下[url]http://api.rubyonrails.org/classes/ActiveRecord/Transactions/ClassMethods.html[/url]
[quote]Different Active Record classes in a single transaction
Though the transaction class method is called on some Active Record class, the objects within the transaction block need not all be instances of that class. This is because transactions are per-database connection, not per-model.

In this example a balance record is transactionally saved even though transaction is called on the Account class:

Account.transaction do
balance.save!
account.save!
end
The transaction method is also available as a model instance method. For example, you can also do this:

balance.transaction do
balance.save!
account.save!
end[/quote]

现在,大家知道了这个问题的回答是错误的,但是无论是作者还是回答者都无法对问题进行修改。JE的SEO做的不错,我不清楚有多少人会通过google第一页,搜索rails,多表事务来找到这个问答,又有多少人会会被这个帖子误导。
众多人都表示压力很大。只要采纳或者过期就无法编辑。
趁这个机会对问答版块提点建议:
1,对问题答案采纳后也能够进行编辑。
2,最好能够向stackoverflow等网址借鉴些经验,所有用户都可以对问题答案进行一个简单投票,这样大家在看问题回答的时候,可以有重点的查看。并且能够对最终的结果进行一个汇总和编辑,虽然采纳了某个人的答案,但是并不意味这最终的答案是属于这个人的,应该是集思广义,对最后的结果进行一个编辑汇总,这样的结果才是一个最佳的结果。
3,我一直不明白为什么提问题还要积分?用完积分不是就不能提了么?提的问题好应该给加分,但是同时如果这个问题没有任何意义,google一搜一堆结果,同样可以投反对票。
大家有什么好的建议可以一起提出来。我帮忙汇总下。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值