2 人のユーザー間で非常に単純なメッセージング システムを実装する必要があります。唯一の要件は、2 人のユーザー間のすべての会話を分離することです。Message(sender_id, recipient_id )
目標を達成するために1 つのモデルのみを使用することが可能で合理的かどうか疑問に思います。
すべての会話のインデックスを取得したいとします。
- に参加して
user.id = recipient_id
、user.id = sender_id
特定のユーザーに関連付けられているすべてのメッセージを取得します - メッセージのグループ (チャットボックス) を形成するため
id
に、反対の参加者 (または であるかどうかsender_id
)によって結果を並べ替えます。recipient_id
これが一番難しいステップだと思います。相手のユーザーが 1 回の会話で送信者または受信者になる可能性があるためです。 - 各グループ内の結果を作成日別に並べ替えて、メッセージを元の順序で表示します。各グループは、異なる会話を表します。
gemを試してみMailboxer
ましたが、この場合はやり過ぎのようです。Conversation
また、メッセージと 1 対多の関係を持つ新しいエンティティの導入に基づく別のソリューションも考えています。