0
organization.users.select("tags.name, users.id").
distinct.joins(roles: [:tags]).merge(Role.active).merge(Tag.interest)
.group_by(&:name).map do |interest, users|
{interest => users.map{ |u| User.find(u.id) }}
end
=> {足球:[用户1,用户2,用户3,...],...}
如何只使用活动记录查询实现呢?我使用ruby进行的分组总是效率低下,因为它再次为每个用户查询数据库,但是完成这项工作。活动记录分组
我也试图与唯一的活动记录查询一样,要实现它:
organization.users.select("tags.name, users.id").
distinct.joins(roles: [:tags]).merge(Role.active).merge(Tag.interest).group("tags.name")
但它给了我
PG::GroupingError: ERROR: column "users.id" must appear in the GROUP BY clause or be used in an aggregate function
嗨,你能详细说明它是什么查询,你正在努力实现的,也什么[:标签],Role.active,Tag.interest – 2014-09-22 15:21:06
我想通过兴趣标签分组用户。结果就像我用{“interest”指定的散列:[用户对象数组]}。 – Machiaweliczny 2014-09-22 15:24:44