Система уведомлений для отслеживания активности пользователей на Rails - PullRequest
1 голос
/ 20 сентября 2011

Я работаю над гемом, который генерировал бы уведомления, основанные на триггерах событий.Например, в CMS, если статья создается, генерируется уведомление «Статья x, созданная пользователем y».(например, уведомления Github / Facebook).

В моем геме у меня есть метод has_notifications, который при указании в модели регистрирует обратных вызовов .

ПроблемаКонечно, когда вызывается обратный вызов, в геме вызывается соответствующее действие, но для этого действия потребуется идентификатор пользователя, который выполнил действие для генерации уведомления.

IЯ искал acts_as_audited и paper_trail для вдохновения, но оба используют переменную Thread.current для хранения пользовательской информации, которая, конечно, я считаю, хакерская и небезопасная .

С точки зрения базового дизайна, я делаю это правильно?Какие еще есть варианты, чтобы получить информацию о пользователях из моего драгоценного камня?Стоит ли вместо этого настраивать фильтры на соответствующих контроллерах для создания уведомлений, которые в случае будут использовать метод vanilla current_user?

Любые идеи будут оценены.Спасибо.

Обновление

Я смотрю на использование виртуальных атрибутов для моделей с обратными вызовами уведомлений и настройку их в соответствующих контроллерах с использованием фильтров перед.

Ответы [ 2 ]

1 голос
/ 20 сентября 2011

Если у меня есть правильное представление о том, как предполагается использовать ваш драгоценный камень, я думаю, модель с обратным вызовом уведомлений, скорее всего, имеет какое-то отношение к пользователю, верно?

Затем вы можете извлечь данные пользователя из отношения, т.е. record.user или record.user_id. Может быть, вы можете по умолчанию установить #user и указать опцию .has_notification, through: "account", если отношение пользователя называется по-другому.

Если модель не имеет отношения, то разработчик может передать пользовательский объект и предоставить его доступным с помощью пользовательского метода.

1 голос
/ 20 сентября 2011

Я бы порекомендовал имитировать шаблон уведомлений, используемый в Какао. По сути, вы можете передать словарь информации о пользователях в свои уведомления, чтобы вы могли поместить нужные данные.

...