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