【问题标题】:Best route for adding conversations to messages将对话添加到消息的最佳途径
【发布时间】:2014-03-29 03:03:57
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails email


    【解决方案1】:

    您想在new 操作中的新Message 上填充recipient_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

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

    【讨论】:

    • 如果您不这么认为,请向我解释更多,因为从我正在阅读的内容来看,它不会是对先前消息的功能性回复。请记住,在回复消息视图中,我将显示对话的线程历史(就像所有收件箱消息系统一样)。此外,您的对话始终只有两个用户是正确的。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2016-07-28
      • 1970-01-01
      • 1970-01-01
      • 2013-10-26
      • 1970-01-01
      • 2014-02-23
      • 1970-01-01
      • 2018-07-29
      • 1970-01-01
      相关资源
      最近更新 更多