Rails方法之——transaction(交易)方法

transaction方法的使用像这样:

ActiveRecord: :Base.transaction do
  PartyA.withdraw(500) #1)甲方支出500
  PartyB.deposit(500) #2)乙方存入500
end

在transaction do中,要求条件 1)和条件2)需要全部生效的时候数据库才能记录更新,否则全部不生效,数据库rollback。转账交易是transaction(交易)方法最典型的应用场景。
其中,PartyA可用类或实例(@party_a)表示。

transaction的应用场景一般为两张表以上的修改动作。如A表的修改动作成功后,B表的一个动作本来应该同步修改的。但是由于其他原因(通常是验证的问题),B表没有修改成功,这样,A改了,B没改,就出问题了。

你可能感兴趣的:(Rails方法之——transaction(交易)方法)