Как считать непрочитанные сообщения в Ruby on Rails 3



Я использую gem mailboxer.

Кто-нибудь может показать мне, как подсчитать количество непрочитанных сообщений в папке Входящие?



Я попробовал:



<%= current_user.mailbox.inbox.unread.count %>


Но я получаю



'ArgumentError in Messages#received wrong number of arguments (0 for 1)'
654   5  

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

    Ничего не найдено.