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


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

def hoge
  User.transaction do
    user1 = User.new
    user1.save! # save!メソッドは保存できない場合、例外ActiveRecord::RecordInvalidが発生

    user2 = User.new
    user2.save!

  end
  #例外が発生しなかった場合の処理
  render :text = "成功"

  rescue => e
  #例外が発生した場合の処理
  render :text = "失敗"
end

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

Categories: , ,

Leave a Reply