3

我正在使用mailboxer gem 在我的ruby on rails 应用程序中发送消息。宝石正在工作。我一生都无法弄清楚如何在已发送消息页面上访问收件人。在已发送消息页面上,我正在尝试遍历已发送消息,并访问已发送消息的收件人并将该人显示给用户。

在常规收件箱页面上,我使用了以下内容:

<% all_mail = current_user.mailbox.inbox %>
<% all_mail.each do |letter| %>
    <tr>
        <td><%= letter.messages.last.sender.email %></td>
        <td><%= letter.messages.last.subject %></td>
   </tr>
<% end %>

我正在尝试对已发送消息页面进行类似的查找,但我不知道该怎么做(特别是访问收件人的电子邮件)。

我不能使用:

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

#user wants to retrieve his inbox
user.mailbox.inbox

#user wants to retrieve his sent conversations
user.mailbox.sentbox

因为没有办法使用这些方法来组织消息的显示方式(至少据我所知)。如何遍历消息并找到每条消息的消息收件人?

4

2 回答 2

3

你有对话的参与者(你称之为字母)。

只需过滤当前用户就可以了。

conversation = user.mailbox.sentbox.first
filtered_participants = conversation.participants.reject do |u| 
  u.id == current_user.id
end
于 2014-01-28T23:05:55.543 回答
0

每封邮件都有收件人,这是一个列表。假设您的对话只是在两个用户之间,您可以获取第一个列表的元素:

<% conversation.messages.each do |message| %>
  <%= message.recipients.first.email %>, <%= message.body %>
<% end %>
于 2014-06-22T02:30:43.560 回答