Как усреднить несколько столбцов в Rails - PullRequest
1 голос
/ 16 февраля 2012

У меня есть следующие объекты: Продукты, Рейтинги и Пользователи. Я пытаюсь отфильтровать и выбрать количество Продуктов, которыми владеет Пользователь (через отношение has_many :through с UserProducts), и усреднить для определенного столбца таблицу Рейтингов, которая соответствует его идентификатору пользователя и правильному идентификатору продукта.

Итак, моя функция выглядит примерно так:

def find_rating(criteria)
  product = self.products.find(:all, :conditions => ["criteria = ?", criteria])
  rating = self.ratings.where("product_id = ?", product).average(:overall)
end

Я думаю, что поступаю неправильно, потому что пытаюсь найти product_id, передавая весь массив данных, состоящий из нескольких продуктов. Но я думаю об использовании более традиционного цикла, и это кажется запутанным. Может ли кто-нибудь указать мне правильное направление для решения этой проблемы? Спасибо!

1 Ответ

1 голос
/ 16 февраля 2012

Если product - это одна запись, как это выглядит в вашем коде, я бы сделал это:

rating = self.products.find_by_criteria(criteria).ratings.average(:overall)

Если это массив продуктов, вам может помочь этот метод: http://apidock.com/rails/ActiveRecord/Batches/ClassMethods/find_each

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...