Ruby on rails 将rails查询结果转换为树的最有效方法

Ruby on rails 将rails查询结果转换为树的最有效方法,ruby-on-rails,postgresql,Ruby On Rails,Postgresql,我对ruby/rails相当陌生。我有一个AR查询,它连接postgres中的两个表-突变和效应。突变有很多影响。 该查询的结果给出如下结果: mutation_id | chr | pos | gene | eff_impact | eff_transcript --------------------------------------------------------------------- 1 | 1 | 123 | JAK | bad

我对ruby/rails相当陌生。我有一个AR查询,它连接postgres中的两个表-突变和效应。突变有很多影响。 该查询的结果给出如下结果:

mutation_id  |  chr  | pos |  gene  |  eff_impact | eff_transcript
---------------------------------------------------------------------
1            |  1    | 123 | JAK   |  bad         | tx123
1            |  1    | 123 | JAK   |  worse       | tx456
2            |  4    | 456 | KRAS  |  fine        | tx234
2            |  4    | 456 | KRAS  |  scary       | tx483
3            |  7    | 789 | SMURF |  helpful     | tx987
这给了我一个简单的结果集,其中包含来自突变表的重复值,因为突变有很多影响

我最终需要的是一个具有树结构的哈希数组,如下所示:

[
{"mutation_id" => 1, 
 "chr" => 1, 
 "pos" => 123, 
 "gene" => "JAK", 
 "effects" => [
  {"eff_impact" => "bad", "eff_transcript" => "tx123"},
  {"eff_impact" => "worse", "eff_transcript" => "tx456"},
 ]
},
{"mutation_id" => 2, 
 "chr" => 4, 
 "pos" => 546, 
 "gene" => "KRAS", 
 "effects" => [
  {"eff_impact" => "fine", "eff_transcript" => "tx234"},
  {"eff_impact" => "scary", "eff_transcript" => "tx483"},
 ]
},
{"mutation_id" => 3, 
 "chr" => 7, 
 "pos" => 546, 
 "gene" => "SMURF", 
 "effects" => [
  {"eff_impact" => "helpful", "eff_transcript" => "tx987"}
 ]
}
] 
结果是约10万行。如果可能的话,我更希望初始查询使用这种树结构返回AR结果


谢谢

尝试
变异。你的现有查询在这里。分组{e | e.Mutation_id}
。最后应该得到一个散列,其中键是id,值是元素数组。你可以根据自己的需要改变分组。@PhilipHallstrom是的,我能做到这一点,但不确定如何改变以适应部分。我做了一些实验,不知道如何在groupby
中使用多个键。groupby{e |[e.mutation_id,e.chr]}
将通过这两个字段的独特组合进行分组。