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没改,就出问题了。
网友评论