2015-02-09 4 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.

отобразить @notifcations по @notifications.each, перебирать их.

Но одно уведомление может представлять только одно (на subject_id), этого слишком много для likes, так как слишком много людей используют эту функцию.

Поэтому я хочу совместить уведомление. Как мне это сделать?

+0

Я не понимаю, вам нужно просто получить количество уведомлений от ответа, например 'reply.notificaitons.size', и получить первого пользователя, который« понравился »? Таким образом, это будут два запроса: count + первый пользователь через тему. –

+0

@DmitryPolushkin, Как вы показываете уведомления? Я делаю '@ notification.all.each', чтобы перебирать их. Но одно «уведомление» может представлять только одно (например, «subject_id»). Но это слишком много для 'любит', поскольку слишком много людей используют эту функцию. Поэтому я хочу объединить уведомление. Как мне это сделать? – cqcn1991

+0

Вам нужно только подсчитать понравившиеся? например: «Notification.where (subject_type:« like », subject_id: SOME_ID) .size'? –

ответ

0

Я предлагаю вам, а затем записывать время, когда было показано последнее уведомление (например, задание cron, которое проверяется каждый час или когда пользователь смотрит уведомления в пользовательском интерфейсе), возможно, как столбец пользователя модель.

Затем, при выполнении своих задач уведомления, фильтр созданный по дате будучи более последнего уведомления

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

Отвечает ли это на ваш вопрос?

Смежные вопросы