У меня есть модель решений, с has_many
Отзывы и обзоры с 'has_many' ReviewValues. Каждый ReviewValue также связан с тегом, который содержит имя тега. Я пытаюсь выбрать avarage scores
(для всех тегов, сгруппированных по тегам), которые идут с определенным решением.Запрос ActiveRecord для связанных элементов
В основном модель Отзывы является таблицу соединения между Solutions и ReviewValues (а также таблица Теги, которая содержит имена)
То, что я до сих пор это:
@total = self.reviews.review_values.average(:score)
Проблема заключается в том что я могу только вызвать review_values для одного конкретного обзора, а не для всех из них. так что я должен был бы сделать что-то вроде self.reviews.first.review_values...
, который не помогает мне, потому что мне нужно в среднем для каждого reviewvalue (по имени тега)
Это то, что таблица review_values выглядит следующим образом:
Table review_values
===================
id, tag_id, review_id, score, created_at, updated_at
-------------------
id int(11) PK
tag_id int(11)
review_id int(11)
score int(11)
created_at datetime
updated_at datetime
И таблица тегов:
Table tags
==========
id, name
----------
id int(11) PK
name varchar(255)
Это похоже на работу. Любая идея, как я могу получить среднее значение для каждого tag_id? – networkprofile
Хороший вопрос - это как «двойной сквозной» там? т.е. review_values have_many tags? ", если это так - это может быть немного сложнее ... Я не думаю, что я когда-либо пробовал использовать двойной проход раньше. Но может быть, стоит просто пойти на это (например,« Решение has_many теги: через: review_values ") –
Я смог сделать это с помощью команды join: средние = self.review_values.joins (: tag) .group (: tag) .average (: score)' спасибо за вашу помощь! – networkprofile