2013-08-01 104 views
0

這裏的設置:雞和蛋電子郵件

我有一個系統與許多帳戶,每個用戶有很多。系統超級用戶可以向所有帳戶廣播消息。消息表示加入了一個賬戶和一條消息。

消息after_create將爲系統中的每個帳戶生成消息。消息傳遞after_create將通過電子郵件將消息傳遞給每個帳戶的用戶。該電子郵件將包含鏈接,例如「點擊這裏閱讀全文:http://example.com/messages/123

Rails似乎在內存中執行這整個操作,然後在最後一步提交到數據庫。大致爲:

Message 
    after_create 
    create_messagings 
     ... 
     Messaging 
     after_create 
      send_email 
      "click here! example.com/messages/123" 

      ... 

      commit to database 

什麼最終情況是,電子郵件開始得到與URL的消息傳遞,但不URL直到最後消息傳遞尚未存在於數據庫中。

我不能成爲第一個反對這個......任何想法?

目前這個應用程序正在使用Rails 3.0,如果這有所作爲。

回答

1

嘗試更改Messaging.after_createMessaging.after_commit

交易一直致力於後after_commit回調被調用,所以這將確保您Message & Messaging記錄在數據庫中存在你觸發send_email方法之前。