2

我正在使用ActiveMerchant處理可能成功或失敗的信用卡事務,這是涉及使用ActiveRecord處理的一些內部會計的較大事務的一部分。如果部分失敗,我不清楚如何回滾整個事務。Rails 3:在單個事務中包裝ActiveRecord操作和外部信用卡

我有一個付款模式和一個積分模型 - 用戶的積分轉換爲美元用於減少他們的付款。所以,我需要做這些事情:

  • 與達幾個驗證和點
  • 攢分交易:借記用戶賬戶,信貸內部帳戶
  • 費信用卡支付的金額從點
  • 價值不大
  • 保存此付款數據
  • 保存信用卡交易的結果(無論成功或失敗)
  • 那麼,如果一切正常,發送電子郵件給用戶

我怎麼看ActiveRecord::Transactions工作,並承擔我可以使用after_commit(和after_rollback)回調來處理東西,如電子郵件用戶。

但是,如何使失敗的信用卡交易導致相同的回滾,導致失敗的AR save?如果我的非AR事務失敗,是否如調用raise ActiveRecord::Rollback一樣簡單?上面鏈接的文檔中有一部分讓我對此感到緊張(涉及不支持多個數據庫連接的事務)。

的Rails 3.2.5,MySQL 5.1中(InnoDB的),紅寶石1.9.3

+0

您的ActiveMerchant調用是到外部服務器,所以它不會影響您的ActiveRecord交易。隨意提高'ActiveRecord :: Rollback'。 – 2012-07-12 08:42:54

+0

@TanzeebKhalili - 把它移到答案上,我會標記它的答案 - 這一切都已經完成並且有效。 – 2012-07-16 05:04:19

+0

聽起來不錯,謝謝! – 2012-07-16 05:57:49

回答

2

你ActiveMerchant電話是外部服務器,這樣就不會影響到你的ActiveRecord交易。隨意籌集ActiveRecord::Rollback

相關問題