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