Ruby on rails 对徽章进行分组和计数

Ruby on rails 对徽章进行分组和计数,ruby-on-rails,count,group-by,Ruby On Rails,Count,Group By,通过徽章授予,用户拥有多个徽章 我能行 @user.badges.count(:group => 'badges.id') 它返回一个ID的散列值和如下所示的计数 {1=>2, 2=>1, 5=>1, 8=>1} 但是我必须再次单独找到徽章来展示它们 是否有返回徽章散列及其计数的方法?您可以在另一个步骤中获取徽章: badge_count = @user.badges.count(:group => 'badges.id') badges = Badge.

通过徽章授予,用户拥有多个徽章

我能行

@user.badges.count(:group => 'badges.id')
它返回一个ID的散列值和如下所示的计数

{1=>2, 2=>1, 5=>1, 8=>1}
但是我必须再次单独找到徽章来展示它们


是否有返回徽章散列及其计数的方法?

您可以在另一个步骤中获取徽章:

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]) }

您可以尝试以下方法:

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

{[1, 'something', 'other_thing']=>2, [2, 'a', 'b']=>1, ...}

这看起来很有用,但在上一条命令My bad,minor语义错误之后,我得到了2:Fixnum的
NoMethodError:undefined方法'[]='。检查更新的答案,最后一行已更改。谢谢-这将是非常有用的,但我必须做的东西与徽章。。。