Ruby on rails 3 Rails 3:将ActiveRecord操作和外部信用卡包装到单个事务中
我正在使用ActiveMerchant处理信用卡交易,该交易可能成功或失败,这是涉及使用ActiveRecord处理的一些内部会计的更大交易的一部分。如果某个部分出现故障,我不清楚如何回滚整个事务 我有一个支付模型和一个积分模型——用户的积分被转换成美元,用来减少他们的支付。所以我需要做这些事情:Ruby on rails 3 Rails 3:将ActiveRecord操作和外部信用卡包装到单个事务中,ruby-on-rails-3,activerecord,transactions,activemerchant,Ruby On Rails 3,Activerecord,Transactions,Activemerchant,我正在使用ActiveMerchant处理信用卡交易,该交易可能成功或失败,这是涉及使用ActiveRecord处理的一些内部会计的更大交易的一部分。如果某个部分出现故障,我不清楚如何回滚整个事务 我有一个支付模型和一个积分模型——用户的积分被转换成美元,用来减少他们的支付。所以我需要做这些事情: 与金额和点数相关的几项验证 保存积分交易:借记用户帐户、贷记内部帐户 从积分中扣除支付金额后的信用卡费用 保存此付款数据 保存信用卡交易结果(是否成功) 然后,如果一切正常,向用户发送电子邮件 我
- 与金额和点数相关的几项验证
- 保存积分交易:借记用户帐户、贷记内部帐户
- 从积分中扣除支付金额后的信用卡费用
- 保存此付款数据
- 保存信用卡交易结果(是否成功)
- 然后,如果一切正常,向用户发送电子邮件
(以及回滚后的)回调来处理向用户发送电子邮件之类的事情
但是如何使失败的信用卡交易导致与失败的ARsave
相同的回滚?如果我的非AR事务失败,是否像调用raiseActiveRecord::Rollback
一样简单?上面链接的文档中有一个部分让我对此感到紧张(与无法跨多个数据库连接工作的事务相关)
Rails 3.2.5、MySQL 5.1(InnoDB)、Ruby 1.9.3您的ActiveMerchant调用是指向外部服务器的,因此不会影响您的ActiveRecord交易。请随时提出ActiveRecord::Rollback
您的ActiveMerchant呼叫是到外部服务器的,因此不会影响您的ActiveRecord交易。请随意提出ActiveRecord::Rollback
@TanzeebKhalili--将此移到一个答案,我将标记它为已回答--所有操作都已完成且有效。