我使用mailboxer gem 来构建一个私人消息系统。
我想遍历我的用户列表,并在每个用户名旁边,提供一个链接以打开一个预先存在的对话(如果存在),或者如果不存在对话则创建一个新对话。(因此用户只能与另一个用户进行 1 次对话,而不是像系统一样的电子邮件)。
<% @users.each do |u| %>
<%= link_to u.name, u %>
<% @mailbox.conversations.each do |c| %>
<% if c.receipts.where(:receiver_id => user).present? %>
true
<% else %>
false
<% end %>
<% end %>
<% end %>
所以“真”将是重新打开对话的链接,“假”将是新对话的按钮。
但如果一个用户有 4 个对话和 1 个与给定用户的对话,它将返回 true false false false。所以 1 继续按钮和 3 创建新按钮。所以本质上,我需要整个事情返回真或假