如何以哈希形式返回 Rails 查询,并将键作为主键 id 值

问题描述 投票:0回答:2

我很好奇是否有本地方法可以返回一个查询,并将 id 值作为返回的哈希键。比如:

Location.find([2,4,7]).as_hash

回来

{
  2:{name:"name 1", id: 2},
  4:{name:"name 4", id: 4},
  7:{name:"name 7", id: 7},

}

我只想做一个 to_json ,这样会很方便。

谢谢

ruby-on-rails ruby-on-rails-3.2
2个回答
0
投票

I'd like to just do a to_json and this would be convenient.

原生,有一个

to_json
方法可以直接以 json 格式提供查询的输出。

Location.find([2,4,7]).to_json

但是,格式与您指定的格式不同。检查它是否适合您。

to_xml, to_yaml
方法是可以类似地分别从 activerecord 查询中输出 xml 和 yaml 数据的其他方法。

或者,你可以这样做

locations = Location.find([2,4,7])
locations_hash = {}
locations.each do |location|
    locations_hash[location.id] = location 
end
locations_hash.to_json    

0
投票

我意识到这已经很旧了,但现在你可以在数组上调用

to_h
并传递一个块来定义键/值对。

因此,在我们的例子中,我们可以运行

Location.find([2,4,7]).to_h { [_1.id, _1 ] } 
,它将返回 3 个位置的哈希值,其中键是 id,值是记录对象。

{
  2 => Location(..),
  4 => Location(..),
  7 => Location(..)
}
© www.soinside.com 2019 - 2024. All rights reserved.