你沒有顯示該模型的代碼,所以我做了一些假設。這裏有一種方法:
class Conversation < ActiveRecord::Base
belongs_to :group
has_many :conversation_participants
has_many :participants, :through => :conversation_participants,\
:source => :user
scope :unread, lambda { |user,group| includes(:group,:conversation_participants).\
where(:group_id => group.id,\
:conversation_participants => {:read => false,:user_id => user.id})
}
end
您要求「未讀對話屬於特定用戶和組」。由於被要求的東西是一組對話,所以這是放置範圍的自然地方。
編輯
我看到你想要的數量,而不是結果集。只需添加.count
的範圍:
Conversation.unread(user,group).count
EDIT 2
是有可能做這樣的事情 這反而得到#, current_user.unread(集團).Count中.. ?
上的用戶添加一個實例方法:
def unread(group)
Conversation.unread(self,group)
end
現在,您可以撥打current_user.unread(group).count
任何一個?這個問題是否令人困惑? – AnApprentice 2011-01-28 21:24:23