首先,用户有很多age_demographics。 AgeDemographic对象如下所示:
#<AgeDemographic id: 4384, user_id: 799, range: "35 - 49", percentage: 3.2, created_at: "2015-05-22 04:17:10", updated_at: "2015-05-22 04:17:10">
我正在建立一个用户搜索工具,其中有人会选择他们想要定位的多个年龄段(例如"12 - 17"
和"18 - 24"
)。我需要选择拥有年龄人口统计对象集合且总百分比大于50%
的用户。
这就是我的开始:
User.joins(:age_demographics).where("age_demographics.range IN (?)", ["12 - 17", "18 - 24", "25 - 34"])
但我无法弄清楚如何将age_demographics的百分比总和与where子句联系起来。
如果这完全没有意义,请告诉我。
答案 0 :(得分:2)
您可以使用having
和group
方法:
User.joins(:age_demographics)
.where("age_demographics.range IN (?)", ["12 - 17", "18 - 24", "25 - 34"])
.group("users.id")
.having("sum(percentage) >= 50")