参考地址:http://www.verydemo.com/demo_c119_i6715.html
....................................................................
- Ruby监控网络发送断开警告信息
- 总结各种Ruby on Rails命令
- 轻松掌握Ruby on Rails上传图片实现技巧
- 几点常识让你知道Ruby优点
- Ruby关闭IE进程采用直接关闭进程法
首先看 transaction 方法
- ActiveRecord::Transactions
Public Class methods - # File vendor/rails/acti
verecord/lib/active_record/
transactions.rb, line 187 - 187: def transaction(&block)
- 188: self.class.transaction(&block)
- 189: end
可以看出他是调用类方法,类方法代码如下:
- # File vendor/rails/activerecord/lib/
active_record/transactions.rb, line 75 - def transaction(&block)
- increment_open_transactions
- begin
- #connection is kind of MysqlAdapter
- connection.transaction(Thread.current
['start_db_transaction'], &block) - ensure
- decrement_open_transactions
- end
- end
- #connection.transaction call method in
- # File vendor/rails/activerecord/
lib/active_record/connection_
adapters/abstract/database_
statements.rb, line 58 - # Wrap a block in a transaction.
Returns result of block. - def transaction(start_db_transaction = true)
- transaction_open = false
- begin
- if block_given?
- if start_db_transaction
- begin_db_transaction
- transaction_open = true
- end
- yield
- end
-
rescue Exception =>
database_transaction_rollback - if transaction_open
- transaction_open = false
- rollback_db_transaction
- end
- raise unless database_transaction
_rollback.is_a? ActiveRecord::Rollback - end
- ensure
- if transaction_open
- begin
- commit_db_transaction
-
rescue Exception => database
_transaction_rollback - rollback_db_transaction
- raise
- end
- end
- end
上面的代码即实现了rails中的transaction,可见ActiveRecord是不支持Ruby on Rails事物嵌套的。 如果模型使用的是相同的数据库, 那么用 ModelA.transaction 或 ModelB.transaction的作用是一样的。
- Code
- objecta.transaction do
- objectb.save!
- end
或者
- objectb.transaction do
- objecta.save!
- end
或者
- ModelA.transaction do
- objectb.save!
- end
都是一样的!
这些对象的方面或类方面, 到最后都是转换成SQL,让数据库来执行, 如果明白这个,一切都变得简单了!
就从SQL而言 "model.transaction do" 只是执行 Begin, "end" 执行Commit. 对于MYSQL个别是引挚支持的存储点功能不在本文讨论范围之内。补充一下, 目前只是SQLServer支持Ruby on Rails事物嵌套,所以如果说ROR支持事务嵌套也就有点勉强!
【责任编辑:曹凯 TEL:(010)68476606】
原文:Ruby on Rails事物嵌套具体方法应用解析 返回开发首页
相关推荐
在这个全球互联的世界中,计算机编程和 Web 应用程序开发都在迅猛发展,我很期待能为中国的开发者提供 Ruby on Rails 培训。学习英语这门世界语言是很重要的,但先通过母语学习往往会更有效果。正因为这样,当看到 ...
Ruby on Rails Guides v2 - Ruby on Rails 4.2.5
Ruby On Rails中文教材(PDF)
Ubuntu系统ruby on rails安装 Ubuntu系统ruby on rails安装 Ubuntu系统ruby on rails安装 Ubuntu系统ruby on rails安装 Ubuntu系统ruby on rails安装 Ubuntu系统ruby on rails安装 Ubuntu系统ruby on rails安装 ...
ruby on rails社区网站开发源码
使用 Ruby on Rails 和 Eclipse 开发 iPhone 应用程序教程(含图例)
ruby on rails对mongodb的操作ruby on rails对mongodb的操作ruby on rails对mongodb的操作ruby on rails对mongodb的操作
Ruby on Rails Web开发学习实录 内容简介: 在目前的主流web开发技术中,基于ruby语言的rails框架是做网站开发速度最快的工具。它可以达到j2ee框架开发速度的5~10倍,并且代码量也非常少。另外由于代码量的大幅度...
Ruby On Rails 官方教程,这本书讲解如何使用 Ruby on Rails 框架开发应用,以及如何把应用部署到生成环境。本书使用 Rails 默认的开发工具栈开发了一个完整的社交应用(类似 Twitter)。读完本书后你将掌握如何使用...
Ruby on Rails中文指南
ruby on rails 教程源码,配合原书使用
本书的目标是成为对“如果想学习使用 Ruby on Rails 进行 Web 开发,我应该从哪儿开始?”这一问题的最好答案。学习完本书的内容之后,你将具备使用 Rails 进行开发和部署 Web 程序的技能。同时你还能够通过一些进阶...
ruby on rails最新版 这是本人精心收集的重要软件
Ruby On Rails 框架自它提出之日起就受到广泛关注,在“不要重复自己”,“约定优于配置”等思想的指导下,Rails 带给 Web 开发者的是极高的开发效率。 ActiveRecord 的灵活让你再也不用配置繁琐的 Hibernate 即可...
ruby on rails 开发环境包(ruby1.8.7,rails2.2.3)
本书教您如何使用Ruby on Rails开发和部署真正的,具有工业实力的Web应用程序,Ruby on Rails是为诸如Twitter,Hulu,GitHub和Yellow Pages等顶级网站提供支持的开源Web框架。
ruby on rails api方便查阅
该资源包包括在Linux安装Ruby on Rails所需的包,以及安装步骤文档