2016-05-09 8 views
0

ユーザーとユーザーの関連付けを使用してリアルタイムのダイレクトメッセージングを作成したいのですが、これを作成する方法は正確にはわかりませんが。1対1でメッセージを送信するメール

例:ユーザー1が連絡先リストからユーザー2のイメージをクリックすると、ユーザー1がメッセージを作成し、ユーザー2に送信します。 User2はメッセージを確認して返信し(インスタントメッセージングのように)、両方のユーザーに同じメッセージが表示されます。

メッセージにはタイトル、イメージ、本文があります(それぞれは利用可能ですが、必須ではありません)。古いメッセージと新しいメッセージ機能は、新しいメッセージ機能より古い古いメッセージを持つ同じページにあります。

ユーザーに届くときにメッセージがどのように表現されるかというアイデアもあります。会話中にメッセージがリアルタイムで表示され、会話に含まれていない場合は連絡先イメージが会話ページに表示されます。あなたが会話を見るためにユーザーをクリックする場所。

問題の一部は、どのように2番目のユーザーを特定するのかと思います。

モデルユーザー::

has_many :conversations 
has_many :messages through => conversations 

モデル会話:

has_many :messages 
has_many :users 

モデルメッセージ:

belongs_to :users through => conversations 
has_many :conversations 

表はの線に沿って次のようになります。

以下の線に沿って考えます

メッセージ:

body 
title 
image 
conversation_id 

会話:

message_id 
user_id 

ユーザー:

id 

任意のアイデア/考えですか?

答えて

0

これを試してみてください:

user.rb:

has_many :messages 
has_and_belongs_to_many :conversations 
# id 

message.rb

belongs_to :user 
belongs_to :conversation 
# body 
# title 
# image 
# conversation_id 
# user_id 

conversation.rb

has_many :messages 
has_and_belongs_to_many :users 
# id 

conversations_users.rb

belongs_to :user 
belongs_to :conversation 
# conversation_id 
# user_id 

注:この構造では、2つ以上のメンバーを持つこともできます。

このヘルプが必要です。 :)

+0

復帰のための@NhãHuỳnhtks。これはどのようにしてuser1とuser2を選択しますか?現時点では、user1がメッセージを作成するのはuser_idによってのみ彼にリンクされていませんか? – blastoff

+0

こんにちは@blastoff、user1がメッセージを作成するとき、それはそれらの間の会話の中にあります(ユーザー)。 conversation.messagesだけですべてのメッセージを取得できます。新しいものを含む。 P/s:この場合のメッセージのuser_idは、誰がメッセージの所有者であるかを表示します。会話は主要なモデルです。この助けを願っています。 :) – thanhnha1103

+0

大丈夫です。だからUserとConversationの#idは自分のidですか?つまり、すべての表に対して自動生成されるIDです。また、実際にこれを行うには4つの異なるモデルが必要ですが、私が知っているのではなく、最大で3つで済むと思っていました。 – blastoff

関連する問題