Как считать непрочитанные сообщения в Ruby on Rails 3
Я использую gem mailboxer.
Кто-нибудь может показать мне, как подсчитать количество непрочитанных сообщений в папке Входящие?
Я попробовал:
<%= current_user.mailbox.inbox.unread.count %>
Но я получаю
'ArgumentError in Messages#received wrong number of arguments (0 for 1)'
5 ответов:
С версией 0.10 :
@user.mailbox.receipts.where(read:false).countС версией 0.11, я думаю, что это было бы (трудно, я не проверял его)
@user.mailbox.receipts.where(is_read:false).count
Взглянув на ссылку исходного кода, предоставленную @MurifoX, я нашел это о непрочитанном методе:
current_user.unread_inbox_countДает вам непрочитанное количество входящих сообщений.
Взглянув на исходный код, я нашел это о методе
unread:#Mark the object as unread for messageable. def unread(obj) ... endВесь этот метод помечает сообщение / почту как непрочитанное, intead извлечения всех непрочитанных сообщений.
Ниже по классу я нашел этот методdef search_messages(query), который, вероятно, имеет какое-то отношение к вашему вопросу.Ссылка на класс. https://github.com/ging/mailboxer/blob/master/lib/mailboxer/models/messageable.rb
Я использую версию
0.9.xизmailboxer. Они переименовали соответствующее поле базы данных изreadвis_read. Чтобы подсчитать непрочитанные сообщения пользователя, просто используйте:@user.mailbox.receipts.where(:is_read => false).count
Для меня это сработало лучше всего:
current_user.mailbox.inbox(:unread => true).count(:id, :distinct => true)
Comments