我需要在 2 个用户之间实现非常简单的消息传递系统,唯一的要求是让 2 个用户之间的每次对话保持分开。Message(sender_id, recipient_id )
我想知道仅使用一种模型来实现目标是否可行且合理。
假设,我想获取所有对话的索引。
- 加入
user.id = recipient_id
并user.id = sender_id
获取与特定用户关联的所有消息 id
对反对的参与者(无论是sender_id
还是)排序结果recipient_id
以形成消息组 - 聊天框。这是我认为最困难的一步,因为反对用户可能是一次对话中的发送者或接收者。- 每个组内的进一步排序结果按创建日期以原始顺序显示消息。每个组表示不同的对话。
我试过Mailboxer
gem,但对于这种情况来说似乎有点过分了。我还考虑了一种基于引入Conversation
与消息具有一对多关系的新实体的不同解决方案。