Рельсы получают наиболее рекомендуемый продукт - PullRequest
1 голос
/ 26 марта 2020

У меня есть: Product => has_many :reviews Review имеет поле recommendation:boolean

Мне нужно получить продукт с наибольшим количеством Review.recommendation:true Каков здесь оптимальный вариант?

Продукт также должен присутствовать в данном массиве категорий. Я пытаюсь что-то вроде этого:

Product.joins(:reviews).where('category_id IN (?)', categories_ids).where(reviews: {recommendation: true}).group(:id)

Спасибо.

1 Ответ

0 голосов
/ 26 марта 2020

Это закончилось моим подходом:

res = Product.joins(:reviews).where('category_id IN (?)', categories_ids).where(reviews: {recommendation: true}).group(:id).count
    result = res.sort_by {|k,v| v}
    id = result.last[0]
    Product.find(id)
...