2015-02-09 25 views
0

下面是這種情況:當他的主題被回覆並且喜歡時,可以通知用戶。Rails:如何將喜歡的通知結合起來?

交易replies很容易。當創建一個回覆時,它將創建一個通知給該主題的作者。

但是,在處理likes時,總會有更多的人在做它。所以我需要結合喜歡的通知。所以用戶可以被通知像Mike and 7 other have liked your topic

問題是,現在我建模notification爲多態。

class Notification < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :subject, polymorphic: true # could be reply, likes and others 
end 

所以關係是這樣reply - >notification - >user,爲1到1比1。

我通過@notifications.each顯示@notifcations,通過它們進行迭代。

但是一個通知只能代表一個像(由subject_id),這對於likes來說太多了,因爲太多人使用此功能。

所以我想結合通知。我該怎麼做?

+0

我不明白你的意思,你只需要得到回覆的通知數量,比如'reply.notificaitons.size',並得到'喜歡'的第一個用戶呢?所以這將是兩個查詢:通過主題計數+第一個用戶。 – 2015-02-09 13:09:16

+0

@DmitryPolushkin,你如何顯示通知?我通過'@ notification.all.each'完成遍歷它們。但是一個「通知」只能表示一個像(由'subject_id')。但對於'喜歡'來說太多了,因爲有太多人使用這個功能。所以我想結合通知。我該怎麼做? – cqcn1991 2015-02-09 13:20:50

+0

你只需要計數喜歡?像這樣:'Notification.where(subject_type:'like',subject_id:SOME_ID).size'? – 2015-02-09 13:29:50

回答

0

我會建議你,然後記錄顯示上次通知的時間(例如,每小時檢查一次的cron作業,或者用戶在UI中查看通知的時間),可能是用戶列模型。

然後,當您運行您的通知任務,過濾器創建的截止日期比上一通知

likes = @topic.likes.where('created_at > ?', @user.last_notified_at) 

這是否回答你的問題嗎?