0

我想显示用户未读已接收消息的计数。这是来自我的用户和消息模型的部分代码。所以本质上,我需要做一些查询来查找用户的所有未读收到的消息,然后在该查询上运行 count 函数。我猜测这些方面的一些事情。找到所有received_messages位置并在其current_userread_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
4

1 回答 1

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

现在,您可以使用此范围查找用户的未读消息。

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

#number of unread messages
@unread_messages.length

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

于 2013-05-17T04:48:46.017 回答