ActiveRecord查询相关元素

时间:2011-11-07 15:50:06

标签: mysql ruby-on-rails ruby activerecord

我有一个解决方案模型,has_many评论和评论'has_many'ReviewValues。每个ReviewValue也链接到包含标记名称的标记。 我正在尝试选择与特定解决方案一起使用的avarage scores(对于按标签分组的所有标签)。

基本上,评论模型是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)

1 个答案:

答案 0 :(得分:0)

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

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

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