2

我正在使用 gem邮箱
谁能告诉我如何计算收件箱中未读邮件的数量?

我试过:

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

但我明白了

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

5 回答 5

4

使用 0.10 版:

@user.mailbox.receipts.where(read:false).count

使用 0.11 版,我认为会是(我还没有测试过)

@user.mailbox.receipts.where(is_read:false).count
于 2013-05-29T10:32:00.797 回答
2

查看@MurifoX 提供的源代码链接,我发现有关未读方法的信息:

current_user.unread_inbox_count

为您提供未读邮件收件箱计数。

于 2016-03-05T12:08:22.197 回答
1

看了一下源代码,我发现了这个unread方法:

#Mark the object as unread for messageable.
def unread(obj)
  ...
end

所有这些方法都将消息/邮件标记为未读,而不是检索所有未读消息。
在课堂上,我发现这种def search_messages(query)方法可能与您的问题有关。

链接到班级。 https://github.com/ging/mailboxer/blob/master/lib/mailboxer/models/messageable.rb

于 2012-07-19T12:29:17.370 回答
1

我正在0.9.x使用mailboxer. 他们将相应的数据库字段从 重命名readis_read。要计算用户的未读消息,只需使用:

@user.mailbox.receipts.where(:is_read => false).count
于 2013-02-11T14:51:28.460 回答
0

对我来说,这个效果最好:

current_user.mailbox.inbox(:unread => true).count(:id, :distinct => true)
于 2015-04-05T19:08:30.623 回答