Как сделать заказ через ассоциацию mongoid

Я хочу заказать через коллекции со значениями из ассоциации.

Пример:

Я получил многократные ассоциации для Поста как:

  • Комментарии
  • Рейтинги
  • отсоединяемые

Как я могу заказать сообщения через такие ассоциации, как:

  • order_by Most_commented
  • order_by Most_rated
  • order_by most_associations....

Спасибо.

1 ответ

Решение

Теперь я могу ответить на этот вопрос ^^

С Mongoid версии 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 явно со значением по умолчанию в вашей модели.

Другие вопросы по тегам