Rails 4:从特定的Model数据创建JSON对象

时间:2015-08-17 10:50:28

标签: ruby json ruby-on-rails-4

我正在尝试在Highcharts函数中实现动态JSON对象,我想知道是否有一种聪明的ruby方法来执行此操作。

基本上我在我的rails应用程序中有用户,每个用户都有一个ISO-a2格式的原籍国。我需要将每个国家/地区的成员数量设为这种格式....(值将是动态变量)

var data = [{"code":"AF","value":"<%= ruby code %>"},
            {"code":"AX",.......and so on

我可以从

开始
       country_array = Array.new
       User.all.map{|u| country_array << u.country}

但是我的尝试导致了可怕的长期混乱。如果有一种聪明的方法可以做到这一点的建议会很棒。

2 个答案:

答案 0 :(得分:1)

User.all.group_by(&:country).map{|k,v| [k, v.count]}.to_h 

这应该会为您提供一个哈希,其中包含国家/地区代码作为密钥以及将该国家/地区代码作为值的用户数。

答案 1 :(得分:0)

您可以使用数据库而不是Ruby来计算结果:

counts = User.group_by(:country).count.map { |code, count| 
  { "code" => code, "value" => count }
}