成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Ruby on Rails事物嵌套具體方法應用解析

開發 開發工具
Ruby on Rails事物嵌套也有不被支持的時候。在這篇文章中我們將會了解到Ruby on Rails事物嵌套是如何被編程人員應用的。

要向熟練地掌握Ruby on Rails具體用法,為我們的編程帶來方便。首先就要從其內置的一些功能特點看起。比如Ruby on Rails事物嵌套等。#t#

首先看 transaction 方法

  1. ActiveRecord::Transactions 
    Public Class methods  
  2. # File vendor/rails/acti
    verecord/lib/active_record/
    transactions.rb, line 187  
  3. 187: def transaction(&block)  
  4. 188: self.class.transaction(&block)  
  5. 189: end 

可以看出他是調用類方法,類方法代碼如下:

 

  1. # File vendor/rails/activerecord/lib/
    active_record/transactions.rb, line 75  
  2. def transaction(&block)  
  3. increment_open_transactions  
  4. begin  
  5. #connection is kind of MysqlAdapter  
  6. connection.transaction(Thread.current
    ['start_db_transaction'], &block)  
  7. ensure  
  8. decrement_open_transactions  
  9. end  
  10. end  
  11. #connection.transaction call method in  
  12. # File vendor/rails/activerecord/
    lib/active_record/connection_
    adapters/abstract/database_
    statements.rb, line 58  
  13. # Wrap a block in a transaction. 
    Returns result of block.  
  14. def transaction(start_db_transaction = true)  
  15. transaction_open = false 
  16. begin  
  17. if block_given?  
  18. if start_db_transaction  
  19. begin_db_transaction  
  20. transaction_open = true 
  21. end  
  22. yield  
  23. end  
  24. rescue Exception =>
     database_transaction_rollback  
  25. if transaction_open  
  26. transaction_open = false 
  27. rollback_db_transaction  
  28. end  
  29. raise unless database_transaction
    _rollback.is_a? ActiveRecord::Rollback  
  30. end  
  31. ensure  
  32. if transaction_open  
  33. begin  
  34. commit_db_transaction  
  35. rescue Exception => database
    _transaction_rollback  
  36. rollback_db_transaction  
  37. raise  
  38. end  
  39. end  
  40. end 

 

上面的代碼即實現了rails中的transaction,可見ActiveRecord是不支持Ruby on Rails事物嵌套的。 如果模型使用的是相同的數據庫, 那么用 ModelA.transaction 或 ModelB.transaction的作用是一樣的。

 

  1. Code  
  2. objecta.transaction do  
  3. objectb.save!  
  4. end 

或者

  1. objectb.transaction do  
  2. objecta.save!  
  3. end 

或者

  1. ModelA.transaction do  
  2. objectb.save!  
  3. end 

都是一樣的!

這些對象的方面或類方面, 到***都是轉換成SQL,讓數據庫來執行, 如果明白這個,一切都變得簡單了!

就從SQL而言 "model.transaction do" 只是執行 Begin, "end" 執行Commit. 對于MYSQL個別是引摯支持的存儲點功能不在本文討論范圍之內。補充一下, 目前只是SQLServer支持Ruby on Rails事物嵌套,所以如果說ROR支持事務嵌套也就有點勉強!

責任編輯:曹凱 來源: 博客園
相關推薦

2009-12-16 15:04:26

Ruby實現strea

2009-12-17 17:37:42

Ruby on Rai

2009-12-17 15:29:00

Rails方法exte

2009-12-18 16:56:05

ADO.NET應用程序

2010-07-21 14:33:01

刪除telnet

2009-11-24 20:09:35

PHP函數header

2009-11-25 17:14:45

PHP安裝為Apach

2009-08-27 10:21:22

Ruby on Rai

2009-12-31 15:05:00

Silverlight

2009-12-03 14:43:46

phpMyAdmin配

2009-12-31 14:12:40

Silverlight

2011-04-01 13:34:12

zabbix

2009-12-16 17:24:26

Ruby on Rai

2009-12-17 11:14:50

Ruby on Rai

2009-11-24 18:18:21

PHP函數array_

2010-08-13 08:59:58

Rails

2010-02-06 11:19:33

C++獲取文件

2009-12-25 16:52:57

網絡接入控制

2009-11-23 19:16:32

路由器測試

2009-08-06 09:13:36

Ruby on Rai
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久欧美 | 国产精品久久久久久久免费观看 | 欧美一区2区三区4区公司 | 精品久久亚洲 | 国产精品永久免费 | 成人美女免费网站视频 | 玖草资源 | 亚洲欧美综合精品久久成人 | 久久久人成影片免费观看 | 久久国产精品网站 | 国产精品69久久久久水密桃 | 亚洲国产黄色av | 国产一区二 | 亚洲自拍偷拍免费视频 | 成人免费视频网站在线观看 | 国产欧美一区二区三区日本久久久 | 精品中文字幕一区二区三区 | 精品国产91乱码一区二区三区 | 久久蜜桃av一区二区天堂 | 玖玖久久 | 国产日韩欧美 | 狠狠婷婷综合久久久久久妖精 | 黄色毛片免费视频 | 精品欧美乱码久久久久久 | 91精品国产乱码久久久久久久 | 亚洲黄色国产 | 国产一区高清 | h视频在线播放 | 成人久久久 | 欧美久久一区 | 日韩成人在线播放 | 日韩在线电影 | 欧美一级大片免费观看 | 真人女人一级毛片免费播放 | 成人性生交大片免费看中文带字幕 | 日韩欧美在线免费观看视频 | 欧美精品在线一区 | 一区二区在线不卡 | 四虎成人免费视频 | 国产不卡视频在线 | 亚洲国产一区在线 |