Comment voulez-vous créer un système de notification comme sur SO ou Facebook dans RoR?

Je pense que les notifications seraient sa propre ressource et auraient une relation 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 de nombreux utilisateurs car il y aurait un certain nombre de notifications standardisées (une notification de commentaire, une notification suivante, etc.) qui serait associé à de nombreux utilisateurs.

Au-delà de cette configuration, Je ne sais pas comment déclencher le création de notifications en fonction de certains événements dans votre application. Je suis également un peu incertain de la façon dont j'aurais besoin de configurer le routage - serait-ce sa propre ressource séparée ou imbriquée dans la ressource utilisateur? Je trouverais très utile si quelqu'un pouvait développer cela.

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

Il y a probablement des choses qui me manquent, alors veuillez remplir ceci pour que ce soit une bonne ressource générale.

44
demandé sur Justin Meltzer 2011-04-11 08:00:55

2 réponses

Donc l'essentiel général:

1) Les Notifications seraient une association polymorphe en ce sens que les commentaires peuvent avoir de nombreuses notifications, les utilisateurs peuvent avoir de nombreuses notifications, Un "suivant" peut avoir de nombreuses notifications, etc.

2) Vous pouvez avoir Modèle Observateurs, où vous pouvez observer certains événements, comme quand un nouveau commentaire est créé. Ce serait vos déclencheurs.

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

La table de Notification peut ressembler à:

Sender_id: entier, receiver_id: entier, notifiable_id: entier, notifiable_type: chaîne

34
répondu Mike Lewis 2011-04-11 04:24:22
  1. Pour un système de notification, je préfère personnellement la technologie Push server. Ryan Bates (la voix derrière Railscasts) a un grand écran cast que vous voudrez peut-être regarder

  2. Pour déclencher des actions pour un événement particulier, jetez un oeil à 'Observers' comme @ mike mentionné

7
répondu sameera207 2012-11-15 10:58:10