我有一个具有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)