Rails如何从结果中构建哈希

时间:2014-07-17 14:57:21

标签: ruby-on-rails hash

我在Db上有一个包含两个字段的表:grouptext

我想检索所有记录并转换为按group字段分组的哈希值,并包含所有文本的数组,如下所示:

{
    'group_1': ['text1','text2',...]
    'group_2': ['text1','text2',...]
    'group_3': ['text1','text2',...]
}

我用这个

部分地完成了它
MyModel.all.group_by(&:group)

但它返回一个包含所有完整AR对象的数组,我只想要一个包含所有文本字符串的数组

我尝试使用map,但我可以在不使用each

的情况下弄清楚如何执行此操作

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

尝试以下方法:

MyModel.all.select([:text, :group]).group_by(&:group)

如果您想使用迭代器(例如:each / map),请按以下步骤操作:

grouped_models = MyModel.all.group_by(&:group)
grouped_models.map do |group, models|
  grouped_models[group] = models.map(&:text)
end

grouped_models
# => { 'group_1' => ['text1', 'text2'], 'group_2' => ['text'] }