Сортировка данных в рубине на рельсах

79
9

Ассоциация подобна

class User < ActiveRecord::Base

has_many :products
has_many :ratings

Я хочу сортировать товары в соответствии с пользовательскими рейтингами. Предположим, что я хочу отсортировать все те продукты, чьи рейтинги больше 4. Я не могу найти способ сделать это.

Я делаю что-то вроде

User.joins(:ratings).where("ratings.rate > ?", 4).includes(:ratings)

Из этого я получаю всех пользователей, чьи рейтинги больше 4, но как присоединиться к продукту и отсортировать их?

спросил(а) 2015-10-14T15:09:00+03:00 4 года, 4 месяца назад
1
Решение
60

User.joins(:ratings).where("ratings.rate >?", 4).order('ratings DESC')

Я не уверен, что includes(:ratings) в последнее время. Должен просто использовать что-то вроде этого, и он должен, вероятно, работать:

User.includes(:ratings).where("ratings.rate >?", 4).order('ratings DESC')

Ссылка: выпуск в порядке заказа и лимит в активной записи

ответил(а) 2015-10-14T15:17:00+03:00 4 года, 4 месяца назад
49

User.joins(:ratings).where("ratings.rate > ?", 4).order('ratings.rate')

И если вы хотите найти связанные продукты, тогда это должно работать:


Product.joins(user: :ratings).where("ratings.rate > ?", 4).order('ratings.rate')

ответил(а) 2015-10-14T15:15:00+03:00 4 года, 4 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема