添加对话消息的最佳途径

时间:2013-10-23 15:01:25

标签: ruby-on-rails email

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

2 个答案:

答案 0 :(得分:0)

您想在recipient_id操作中的新Message上填充new吗?是吗?

如果保证会话只有两个用户,则可以执行类似

的操作

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

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

答案 1 :(得分:0)

您可能需要查看Mailboxer Gem's sourcecode,您可能会在那里找到一些答案。