web-dev-qa-db-ja.com

SOまたはRoRのFacebookのような通知システムをどのように作成しますか?

通知はそれ自体のリソースであり、関連付けを表す結合テーブルを持つユーザーモデルとhas_many, throughの関係があると思います。

多くの通知を持つユーザーは明らかであり、多くのユーザーに関連付けられる標準化された通知(コメント通知、後続の通知など)が多数あるため、通知には多くのユーザーが含まれます。

この設定以外に、アプリケーションの特定のイベントに基づいて通知の作成をトリガーする方法がわかりません。また、ルーティングをどのように設定する必要があるのか​​、少しわかりません。それは、独自の個別のリソースなのか、それともユーザーリソースにネストされているのでしょうか。誰かがこれを拡張できれば非常に役立つと思います。

最後に、ajaxポーリングはそのような機能を改善する可能性があります。

足りないものがあるかもしれませんので、一般的な資料としてご記入ください。

44
Justin Meltzer

したがって、一般的な要点:

1)通知は、コメントに多くの通知を含めることができ、ユーザーに多くの通知を含めることができ、「フォロー」に多くの通知を含めることができるという点で、多形の関連付けになります。

2) Model Observers を設定できます。ここでは、新しいコメントが作成されたときなど、特定のイベントを「監視」できます。これがあなたの引き金になります。

ルーティングに関しては、実際には標準外のことをする必要はありません。あなたが持っているかもしれない唯一のルーティングはそれがすべての通知を表示するdomain.com/notificationsです。

通知テーブルは次のようになります。

sender_id:整数、receiver_id:整数、notizable_id:整数、notizable_type:文字列

34
Mike Lewis
  1. 通知システムの場合、私は個人的にサーバープッシュテクノロジーを好みます。 Ryan Bates(Railscastsの背後にいる声)には 素晴らしいスクリーンキャスト があります。

  2. 特定のイベントのアクションをトリガーするには、@ mikeが述べた「オブザーバー」をご覧ください。

7
sameera207