transaction方法的使用像這樣:
ActiveRecord: :Base.transaction do
PartyA.withdraw(500) #1)甲方支出500
PartyB.deposit(500) #2)乙方存入500
end
在transaction do中,要求條件 1)和條件2)需要全部生效的時候數(shù)據(jù)庫才能記錄更新,否則全部不生效,數(shù)據(jù)庫rollback。轉(zhuǎn)賬交易是transaction(交易)方法最典型的應用場景。
其中,PartyA可用類或?qū)嵗ˊparty_a)表示。
transaction的應用場景一般為兩張表以上的修改動作。如A表的修改動作成功后,B表的一個動作本來應該同步修改的。但是由于其他原因(通常是驗證的問題),B表沒有修改成功,這樣,A改了,B沒改,就出問題了。