2014年5月18日 星期日

after_create vs after_commit


  • after_commit  

就是資料庫已經commit之後執行 , 所以如果執行after_commit失敗的話 之前commit的也不會rollback , 因為after_commit transaction 結束了

也就是資料確定進去了所以after_commit 用在一些背景執行之類,寄信什麼的

  • after_create 
        是已經產生但還沒commit 執行 ,執行after_create失敗的話 ,還可以rollback


     所以兩者使用的時機

  • after_commit
        例如寄信,因為寄信動作發了,也不可能在取消,所以也不需要什麼rollback了
  • after_create
        如果這個動作還是再做db的動作 在transcation裡面 如果他失敗了 他會取消 就整個rollback

沒有留言:

張貼留言