2013-10-23 46 views
3

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

回答

0

你想在你的new动作中填入新的Messagerecipient_id?是对的吗?

如果对话被保证只有两个用户,你可以不喜欢

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

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

+0

如果您认为否则请仅仅向我解释它,因为从我正在阅读的内容来看,它不会是对以前的消息的功能回复。请记住在消息视图的回复中,我将显示对话的线程历史记录(就像所有收件箱邮件系统一样)。同样你也是对的,对话总是只有两个用户。 – pwz2000