У меня есть две плоские ленты для каждого пользователя.
Фид timeline
предназначен для общедоступного пользовательского контента (называемого постами), который отображается на временной шкале профиля.Фид log
предназначен для действий пользователя, которые не обязательно должны отображаться на временной шкале, но могут быть объединены в ленте новостей (например, «Пользователь 1 и 10 других прокомментировали этот пост»)
Яв настоящее время строит функцию новостной ленты.Для этого я создал агрегированный фид news
для каждого пользователя.Каждый раз, когда кто-то следует за пользователем, его news
фид следует за timeline
и log
.
другого человека. Вот пример сценария:
- Пользователь 2 следует за пользователем 1.user_2.news_feed.follow ('timeline', 1) И user_2.news_feed.follow ('log', 1)
- Пользователь 2 следует за пользователем 3. user_2.news_feed.follow ('timeline', 3) ANDuser_2.news_feed.follow ('log', 3)
- Пользователь 1 разместил на своей временной шкале user_1.timeline_feed.add_activity ({actor: 'user: 1', глагол: 'post', object: 'post: 1 ', target:' user: 1 '})
- Пользователь 3 понравился Пост пользователя 1 user_3.log_feed.add_activity ({субъект:' user: 3 ', глагол:' like ', объект:' like: 1 ', target:' post: 1 '})
В этом примере, поскольку news: 2 следует за временной шкалой: 1 и log: 3, два разных действия, относящиеся к одному и тому же сообщению, будутбыть перенаправленным на новости: 2.
{actor: 'user: 1', глагол: 'post', объект: 'post: 1', target: 'user: 1', post: 1} {actor: 'user: 3', глагол: 'like', объект: 'like: 1', target: 'post: 1', post: 1}
Как вы предлагаете, это лучший способ написать мое правило агрегирования.
Я думаю, что мне нужно агрегировать по пользовательскому атрибуту post
, который я добавил.Таким образом, сообщение будет появляться только один раз в ленте новостей.
Однако я хочу создать сводный текст, похожий на Facebook: «Пользователь 1 и 10 других прокомментировали это сообщение».
Есть ли способ сделать это с помощью правил агрегирования?