Rails Mailboxer/ Messaging - возвращать только непустые массивы
Я использую гем почтового ящика для создания системы личных сообщений.
Я хочу перебрать свой список пользователей и рядом с именем каждого пользователя предоставить ссылку, чтобы открыть ранее существовавшую беседу, если она существует, или создать новую, если беседы не существует. (Таким образом, пользователи смогут вести только 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 %>
таким образом "true" будет ссылкой для возобновления разговора, а "false" будет кнопкой для нового разговора.
но если у пользователя 4 разговора и 1 с данным пользователем, он вернет true false false false false. поэтому 1 кнопка продолжения и 3 создания нового. по сути, мне нужно все, чтобы вернуть либо истину, либо ложь
1 ответ
Если кому-то интересно, это более элегантное решение. просто в контроллере. тогда все ссылки одинаковы, и он откроет сообщение, если оно существует. фильтрация по беседе. участник (а). участник (б) был ключевым
def new
@recipient = User.find(params[:recipient])
@ongoing_conversation = Conversation.participant(current_user).participant(@recipient)
respond_to do |format|
format.html { redirect_to root_path }
if @ongoing_conversation.present?
format.js { redirect_to mailbox.conversations.find(@ongoing_conversation) }
else
format.js
end
end
end