Rails:如果大于0,如何进行查询以显示未读消息的数量?

时间:2013-05-17 04:36:54

标签: ruby-on-rails ruby-on-rails-3

我想显示用户未读收到消息的计数。以下是我的用户和消息模型的代码的一部分。基本上,我需要做一些查询,找到用户的所有未读消息,然后在该查询上运行count函数。我在猜测这些问题。找到received_messages current_user read_at IS NULL的所有.count,并在其上调用class User < ActiveRecord::Base has_many :received_messages, dependent: :destroy, :class_name => 'Message', :foreign_key => 'recipient_id', :order => "messages.created_at DESC", end class Message < ActiveRecord::Base def read? self.read_at.nil? ? false : true end end 方法。我只是无法创建查询。我对包含和加入不是很了解。任何人都可以帮我这个吗?

{{1}}

1 个答案:

答案 0 :(得分:2)

class Message < ActiveRecord::Base
  scope :unread, where(read_at: nil)
end

现在,您可以使用此scope查找用户的未读邮件。

@user = User.first #or find as you want
@unread_messages = @user.received_messages.unread

#number of unread messages
@unread_messages.length

注意:我无法测试这些。但是,这应该会给你一些想法。