2009-10-13 77 views
4

我試圖爲我的應用程序的用戶實施簡單收件箱系統,以便可以向對方發送基本消息 - 就像在許多論壇系統中一樣。使用MessageClicks表跟蹤讀取/未讀用戶消息嗎?

如果User has_many :messages,我如何跟蹤並通知用戶消息自上次讀取以來未讀?

我的鏈接點擊思維的Messages屏幕需要被記錄在一個單獨的表(MessagesClicks)。

這是最好的辦法嗎?

於是我查MessagesClicks表,看是否有新的消息已經自從上次被點擊的鏈接到達 - 根據last_clickedupdated_at

回答

6

我會跟蹤消息在消息本身上的讀取時間,默認值爲null。

如果用戶有任何消息的dateRead值爲null,那麼他們有未讀的消息。

在Messages(消息)屏幕上向用戶顯示消息時,將消息的dateRead屬性從null更新爲now。

+1

如果消息不是每個用戶唯一的,你會怎麼做? – user730569 2011-05-07 07:05:51

+1

@ user730569在這種情況下,您可以添加一個包含user_id和message_id(可能包含時間戳或其他有趣信息)的參考表並將該信息存儲在那裏。 – tosh 2012-06-14 12:50:54

+0

它不適用於有多個參與者的對話。爲此,您必須創建另一個關聯模型,例如'ReadReceipt' – Sachin 2017-02-07 07:29:18