2012-02-08 11 views
1

を考えるために、ここで最も単純な例では、誰かが自分のステータスにコメントを投稿たとえば、あなたの写真が好きで、Facebookの通知です、または単にあなたには、いくつかのゲームに招待し送信します。Railsアプリケーションで通知を実装する方法は何ですか?

通知は、彼がそれを読み込むまでの間だけ、ユーザに表示されるように、Railsアプリケーションでこれを実装し、おそらく異なるプラットフォーム上でそれを読み取る能力を持つためにいくつかの方法は何ですか。

リアルタイムチャットのような通知はサーバープッシュを使用していますが、最後に訪問したときから何が起こったかをユーザーに示すための方法です。例えば

、私は記事を読んで、私はコメントを投稿して、誰かがそれに応答します。次回のログイン時に、誰かが私のコメントに返事をしたことが分かります。

Notificationモデルでは、readという属性があり、ユーザーがサイトにアクセスすると、現在表示されていないすべての通知が表示されます。リレーショナルデータベースを使用せずにこれを行うには良い方法は

ありませんか?

答えて

0

私は自分のサイトにアラートモデルを持っています。何かが起こると、アラートが追加され、他のユーザーはログイン時にアラートを表示します。重要なのは、ユーザーがアラートを却下することができるように、解約フィールドを持つことです。そのため、ユーザーは同じアラートを繰り返し表示することはありません。また、領域フィールドがあるので、ウェブサイトの特定の部分にアラートを接続することができます。また、detail_linkフィールドがあり、クリックしてアラートの内容を見るためのリンクをユーザに提供します。

8

私はこのために、シリアル番号messagesアレイを使用して私の既存のUserモデルを使用します。

移行を経て、ユーザーテーブルにmessages列(TEXTタイプ)を追加します。

add_column :users, :messages, :text, :null => false, :default => "--- []" 

を次に、あなたのuserモデルでそれをシリアル化:

serialize :messages, Array 

、あなたがこれを行うことができます

# Add messages 
@user.messages.push "You have a new message!" 

# Read messages 
@user.messages # => ["You have a new message!"] 

# Clear one message 
@user.messages.delete_at(0) 

# Clear all messages 
@user.messages.clear 

# Get message counts 
@user.messages.empty? # => true 
@user.messages.count # => 0 

あなたがmultipと、より詳細なメッセージが必要な場合leパラメータ(from、subject、importance)では、常にハッシュを使用できます。

関連する問題