分组和计数徽章数量

时间:2012-10-11 14:14:48

标签: ruby-on-rails count group-by

用户has_many徽章通过badge_awardings

我能做到

@user.badges.count(:group => 'badges.id')

返回一个ids的哈希并计算如下

{1=>2, 2=>1, 5=>1, 8=>1}

但是我必须再次单独找到徽章才能显示它们。

有没有返回徽章及其数量的哈希?

2 个答案:

答案 0 :(得分:0)

你可以在另一步获得徽章:

badge_count = @user.badges.count(:group => 'badges.id')
badges = Badge.find(badge_count.keys)
badges_counted = badges.inject({}){ |h, v| h.update(v => badge_count[v.id]) }

答案 1 :(得分:0)

您可以尝试以下方式:

@user.badges.count(:group => [:id, :some_column_name, :another_column_name])

这会让你:

{[1, 'something', 'other_thing']=>2, [2, 'a', 'b']=>1, ...}
相关问题