如何通过mongoid协会订购

时间:2013-02-27 13:38:40

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

我想通过带有关联值的集合进行排序。

示例:

  

我为帖子提供了多种关联:

     
      
  • 评论
  •   
  • 评分
  •   
  • 附着物
  •   

如何通过以下关联订购帖子:

  
      
  • order_by most_commented
  •   
  • order_by most_rated
  •   
  • order_by most_associations ....
  •   

谢谢。

1 个答案:

答案 0 :(得分:1)

现在我可以回答这个问题^^

使用Mongoid version 3.1,活动记录功能“counter_cache”是可用的。 例如,我收到了一篇引用评论的帖子:

class Post
  include Mongoid::Document
  field :body, type: String

  has_many :comments                                                                                                                                                                             
end



class Comment
  include Mongoid::Document
  field :body, type: String

  belongs_to :post, counter_cache: true                                                                                                                                                                             
end

在这种情况下,每个帖子实例都有一个comments_count字段,其中包含帖子中引用的评论数。

现在,您可以使用comments_count字段订购帖子。 请记住,只有至少存在一条评论时,此字段才可用。 或者使用模型中的默认值显式设置comments_count字段。