2015-04-26 56 views

回答

1

您無法一次真正使用兩個集合,因此您需要Person中的某些東西可以排序。通常的做法是使用計數器緩存來緩存每個Person中的註釋數量。你有這樣的事情:

class Person 
    include Mongoid::Document 
    has_many :comments 
end 
class Comment 
    include Mongoid::Document 
    belongs_to :person, :counter_cache => true 
end 

:counter_cache => true選項belongs_tocomments_count字段添加到Person其中將包含註釋的緩存數量。

一旦你有你的櫃檯緩存,你可以說:

Person.desc('comments_count') 

讓你排序。

您需要使用Person.reset_countersPerson#reset_counters手動初始化計數器才能開始工作。

+0

但在我的情況下,它不是belongs_to,它是嵌入式的..... –

+1

您的意見嵌入在您的員工中,因此您的意見是關於您的員工的?我認爲計數器緩存仍然是最乾淨的方法。 –