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
自動でロールバックしてくれます。