User.all.group('users.gender').count.map { |k, v| [User.genders.key(k), v] }.to_h
它出错了
NoMethodError: undefined method `to_h' for [["Male", 44], ["Female", 2]]:Array
它在localhost上工作正常,但在heroku上它会给出错误
答案 0 :(得分:1)
嘿,您可以尝试以这种方式使用reduce
方法
User.all.group('users.gender').count.map { |k, v| {User.genders.key(k) => v} }.reduce({}, :merge)
答案 1 :(得分:1)
将数组转换为Ruby的旧方法< 2.1
Hash[*array.flatten]
...
arr = [["Male", 44], ["Female", 2]]
Hash[*arr.flatten]
=> {"Male"=>44, "Female"=>2}
在你的情况下
Hash[*(User.all.group('users.gender').count.map{ |k, v| [User.genders.key(k), v] })]