2015-04-26 4 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_to добавит comments_count поля для Person, который будет содержать кэшированное количество комментариев.

После того, как у Вас есть свой кэш счетчик, вы можете сказать:

Person.desc('comments_count') 

, чтобы получить сортировку.

Вам нужно будет инициализировать счетчики вручную, используя Person.reset_counters или Person#reset_counters, чтобы все началось.

+0

Но в моем случае это не принадлежит_to, это встроено ..... –

+1

Ваши комментарии встроены в ваших людей, чтобы ваши комментарии касались ваших людей? Я думаю, что кэш-счетчик по-прежнему является самым чистым подходом. –

Смежные вопросы