44 votes

Comment créer un système de notification comme sur SO ou Facebook dans le RdR ?

Je pense que les notifications devraient être une ressource à part entière et avoir une has_many, through avec le modèle utilisateur avec une table de jointure représentant les associations.

Un utilisateur ayant de nombreuses notifications est évident, et une notification aurait alors de nombreux utilisateurs car il y aurait un certain nombre de notifications standardisées (une notification de commentaire, une notification de suivi, etc.) qui seraient associées à de nombreux utilisateurs.

Au-delà de cette configuration, je ne sais pas comment déclencher la création de notifications en fonction de certains événements dans votre application. Je ne sais pas non plus comment configurer le routage - s'agit-il d'une ressource distincte ou d'une ressource intégrée à la ressource utilisateur ? Je trouverais très utile que quelqu'un me donne des précisions à ce sujet.

Enfin, l'interrogation par ajax améliorerait probablement une telle fonctionnalité.

Il y a probablement des choses qui m'échappent, alors remplissez ce formulaire pour qu'il soit une bonne ressource générale.

34voto

Mike Lewis Points 29305

Donc l'essentiel :

1) Les notifications seraient une association polymorphe dans la mesure où les commentaires peuvent avoir plusieurs notifications, les utilisateurs peuvent avoir plusieurs notifications, un "suiveur" peut avoir plusieurs notifications, etc.

2) Vous pouvez avoir Observateurs de modèles où vous pouvez "observer" certains événements, par exemple lorsqu'un nouveau commentaire est créé. Il s'agit de vos déclencheurs.

En termes de routage, vous n'avez pas besoin de faire quoi que ce soit d'inhabituel. Le seul routage que vous pouvez avoir est un domaine.com/notifications où il montre toutes les notifications.

Le tableau de notification pourrait ressembler à ceci :

sender_id : integer, receiver_id : integer, notifiable_id : integer, notifiable_type : string

7voto

sameera207 Points 7885
  1. Pour un système de notification, je préfère personnellement la technologie du push serveur. Ryan Bates (la voix qui se cache derrière Railscasts) a une de grands acteurs de l'écran que vous pourriez vouloir regarder

  2. Pour déclencher des actions pour un événement particulier, jetez un coup d'œil à "Observers" comme @mike l'a mentionné.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X