2013-10-27 149 views
0

我在我的Rails应用程序下面的查询,但它的结果没有任何属性的名字,所以我不能够在amcharts使用它缺少的属性名

EmployeeDepartment.joins(:states).group 
("employee_departments.name").count 

结果是:{"Academic Support":1}

如何使它像这样{"department_name":"Academic Support","department_count":1}

回答

0

我通过以下步骤解决了我的问题:

以下代码:

EmployeeDepartment.joins(:states).group 
    ("employee_departments.name").count 

rails console

SELECT COUNT(*) AS count_all, employee_departments.name AS employee_departments_name FROM "employee_departments" INNER JOIN "tickets" ON "tickets"."employee_department_id" = "employee_departments"."id" INNER JOIN "states" ON "states"."id" = "tickets"."state_id" GROUP BY employee_departments.name 

生成此我用什么是在console在以下产生:

@department_count = EmployeeDepartment.find(:all, 
      :select => 'employee_departments.name AS employee_departments_name, COUNT(*) AS department_counter', 
      :joins => 'INNER JOIN tickets ON tickets.employee_department_id = employee_departments.id INNER JOIN states ON states.id = tickets.state_id', 
      :group => 'employee_departments.name') 

现在的结果是amcharts:

var chartData = [{"department_counter":1,"employee_departments_name":"Academic Support"}]; 
3

比方说,你有这样的哈希:

hash = { "Academic Support" => 1, "Another Department" => 3, "Something Else" => 4 } 

您可以使用map将其转换为包含所需内容的散列数组。

hash.map { |k, v| { "department_name" => k, "department_count" => v } } 
=> [{"department_name"=>"Academic Support", "department_count"=>1}, 
    {"department_name"=>"Another Department", "department_count"=>3}, 
    {"department_name"=>"Something Else", "department_count"=>4}] 

如果你的哈希永远只包含一个键/值对只是想和你另一哈希值,你可以试试这个:

Hash[[["department_name", "department_count"], hash.first].transpose] 

或者也可以简单...

{ "department_name" => hash.keys.first, "department_count" => hash.values.first }