3

我有一个收件箱系统,但我不确定如何实现对功能的回复。所有消息都应该属于某个其他实体,例如“对话”。创建第一条消息时,也会创建对话。所有后续消息都是该对话的一部分。对话只能在两个用户之间进行,没有允许人们转发消息或将更多人添加到对话中的选项。如果用户使用“回复”操作来回交换多条消息..用户应该能够在视图中查看他们过去来自该对话的消息。这样做的要求是什么?我应该创建一个对话模型还是可以在 Messages 表中添加一个新列,conversation_id。如果用户回复消息 id 27,那么它将创建一个新的消息 id 28 和conversation_id值将是 27。然后我可以从 27 开始做一个 desc conversation_id。这将显示属于 id 27 的所有消息的历史记录。

4

2 回答 2

0

您想在您的操作中填充recipient_id新的吗?那正确吗?Messagenew

如果保证对话只有两个用户,您可以执行类似的操作

current_conversation.users.select { |u| u.id != current_user.id }

或者

User.joins(:conversations).where("conversations.id = ? AND users.id != ?", current_conversation.id, current_user.id).first

您使用的是“回复”这个短语,所以我假设对话已经存在。如果没有,作者必须在对话中指定其他用户。

于 2013-10-29T10:37:33.930 回答
0

您可能想查看Mailboxer Gem 的源代码,您可能会在其中找到一些答案。

于 2013-11-10T15:37:11.500 回答