0

用户通过 badge_awardings 获得了很多徽章

我可以

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

它返回一个 id 的哈希值并像这样计数

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

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

是否有返回徽章及其计数的哈希值?

4

2 回答 2

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]) }
于 2012-10-11T14:32:34.123 回答
0

您可以尝试以下方法:

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

这会让你:

{[1, 'something', 'other_thing']=>2, [2, 'a', 'b']=>1, ...}
于 2012-10-11T14:34:56.537 回答