我正在使用ActiveMerchant来处理可能成功或失败的信用卡交易,这是涉及使用ActiveRecord处理的一些内部会计的更大交易的一部分。如果部件发生故障,我不清楚如何回滚整个交易。
我有付款模式和积分模型 - 用户的积分转换为美元,用于减少付款。所以我需要做这些事情:
我看到ActiveRecord::Transactions如何工作,并假设我可以使用after_commit
(和after_rollback
)回调来处理电子邮件发送给用户的内容。
但是,如何使失败的信用卡交易导致失败的AR save
导致同样的回滚?如果我的非AR交易失败,是否像调用raise ActiveRecord::Rollback
一样容易?上面链接的文档中有一节让我对此感到紧张(与不能跨多个数据库连接的事务有关)。
Rails 3.2.5,MySQL 5.1(InnoDB),Ruby 1.9.3
答案 0 :(得分:2)
您的ActiveMerchant调用是指外部服务器,因此不会影响您的ActiveRecord事务。随意提出ActiveRecord::Rollback
。