2015-06-21 68 views
3

創建新用戶(在我的用戶模型中)我也想創建一個條帶客戶。這兩個行動只有在他們一起成功時才能完成(就像我不想要沒有用戶的客戶,反之亦然)。出於這個原因,我認爲將它們包裝在交易中是一個好主意。但是,我不能正確地做。我不相信我正在覆蓋創建方法。如果任何人有一個建議作爲一個更好的方式來做到這一點或我做錯了,它將不勝感激。謝謝!關於創建交易的導軌

def create 
    User.transaction do 
     super 
     create_stripe_customer(self) 
    end 
    end 

    def destroy 
    User.transaction do 
     super 
     delete_stripe_customer(self) 
    end 
    end 
+0

我一般使用事務塊作爲一個關鍵部分與數據庫鎖,以防止競爭條件。在你的情況下,如果你在用戶模型的''after_create'回調中調用'create_stripe_customer',會不會有問題?如果create_stripe_customer失敗,那麼您的用戶創建也應該回滾。 –

+0

我在關注。有人必須對這個問題有一個很好的答案。 –

+0

after_creation方法失敗會導致回滾?如果這樣做是完美的,並且會解決我的問題。我最初是這樣做的,但不確定失敗是否會導致回滾。 – soliman

回答

1

我已經對你的問題做了一些研究,使用after_create似乎沒問題,只要發生異常就會引發異常。這也將回滾交易。只需使用默認回調。

Here is a good answer related to the question.

+0

謝謝。我在Vijay上面的建議之後也研究了這一點,並且它似乎執行了所需的結果。謝謝你們的幫助! – soliman