Rails私信如何创建对话视图?

时间:2012-11-05 23:18:28

标签: ruby ruby-on-rails-3 ruby-on-rails-3.2

我正在将此gem用于私人消息:https://github.com/jongilbraith/simple-private-messages

我想创建一个线程对话,而不是脚手架提供的电子邮件对话。

例如,用户A向用户B发送了10条消息。用户A也向用户C发送了10条消息。

而不是遍历所有消息。 (电子邮件看)我想创建一个像以下的威胁:

收件箱

Conversation with User A (10 messages)
Conversation with User C (10 messages) 

点击对话时,应在日期后订购消息。所以这就像是一场谈话。

消息表:

id
sender_id
recipient_id
sender_deleted
recipient_deleted
subject
body
read_at
created_at
updated_at

如何创建这些视图?如何对邮件进行分组?

1 个答案:

答案 0 :(得分:2)

简短的回答是:你不能用那个宝石。您必须扩展它并添加一个Conversation模型,然后在用户和消息之间建立桥接。

相反,我建议你使用这个宝石:

https://github.com/ging/mailboxer

比你目前的宝石强大得多,而且开箱即用的对话。我以前用它来模仿类似gmail的视图。

从指南中:

#alfa wants to retrieve all his conversations
alfa.mailbox.conversations

#A wants to retrieve his inbox
alfa.mailbox.inbox

#A wants to retrieve his sent conversations
alfa.mailbox.sentbox

#alfa wants to retrieve his trashed conversations
alfa.mailbox.trash

简单的馅饼:

current_user.mailbox.conversations.each do |convo|
  convo.subject
  ...
end