未定义的方法to_h for Array

时间:2016-02-09 06:20:51

标签: ruby-on-rails activerecord heroku enums

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上它会给出错误

2 个答案:

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