Ruby on Rails (3.x >= 3.2.9) のためのブログです (どっちかというと社内ブログ的な感じで、基礎から書いてきます) 。
12月
08
Comments


Railsでトランザクション処理を実装する場合、その機能をActiveRecordが用意してくれています。 transaction do ..... end を使用すればOKなのです。

  1. def hoge  
  2.   User.transaction do  
  3.     user1 = User.new  
  4.     user1.save! # save!メソッドは保存できない場合、例外ActiveRecord::RecordInvalidが発生  
  5.   
  6.     user2 = User.new  
  7.     user2.save!  
  8.   
  9.   end  
  10.   #例外が発生しなかった場合の処理  
  11.   render :text = "成功"  
  12.   
  13.   rescue => e  
  14.   #例外が発生した場合の処理  
  15.   render :text = "失敗"  
  16. end  

自動でロールバックしてくれます。

Categories: , ,

Leave a Reply