将一组Active Record对象转换为哈希

时间:2015-10-30 19:35:52

标签: ruby

我有一个Active Record对象数组。我想创建一个用作索引的哈希。我的Active Record对象具有属性namevalue

理想情况下,我想迭代数组并创建一个哈希,它将创建类似于:

hash[name] = value

创建数组foo以创建类似于上面的哈希的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

这样的事情会起作用:

hash = {}
Model.all.map { |i| hash[i.id] = i }

hash应评估为:

{
  :1 => #<ActiveRecord:1>,
  :2 => #<ActiveRecord:2>,
  ...
}

答案 1 :(得分:0)

您可以使用方法Hash::[]

relation = Record.where("query")

Hash[
  relation.to_a.map do |obj|
    [obj.name, obj.value]
  end
]