2013-05-17 33 views
0

我想显示用户未读的收到消息的数量。以下是我的用户和消息模型中的部分代码。所以基本上,我需要做一些查询,查找所有未读的用户接收到的消息,然后在该查询上运行计数功能。我正在猜测这方面的一些事情。查找所有received_messagescurrent_user其中read_at IS NULL并调用其上的.count方法。我只是无法创建查询。我对包含和连接不太擅长。任何人都可以帮助我吗?现在Rails:如果查询大于0时显示未读消息的计数,如何执行查询?

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

'? false:true'是不必要的。只是'self.read_at.nil?' – ck3g

回答

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 

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

+0

感谢ck3g的编辑和发现我的错误。 – HungryCoder