我有一个具有has_many评论的解决方案模型,以及具有“ has_many” ReviewValues的评论。每个ReviewValue还链接到包含标签名称的标签。
我正在尝试选择特定解决方案附带的平均scores(对于按标签分组的所有标签)。

基本上,Reviews模型是Solutions和ReviewValues之间的联接表(还有包含名称的Tags表)

我到目前为止所拥有的是:

@total = self.reviews.review_values.average(:score)


问题是我只能在一个特定的评论上调用review_values,而不能对所有评论都调用。所以我必须做self.reviews.first.review_values...之类的事情,对我没有帮助,因为我需要每个评论值的平均值(按标签名称)

这是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)

最佳答案

您是否尝试过使用:through?
例如:

class Solution
    has_many :reviews
    has_many :review_values, :through => :reviews
end

@total = my_solution.review_values.average(:score)

10-08 06:35