Ruby on rails 如何在rails中将数组对象转换为散列

Ruby on rails 如何在rails中将数组对象转换为散列,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 4,我有一个带有数组对象的哈希: { false=>[#<Campaign id: 1, name: "campaign 1", active: false>, #<Campaign id: 3, name: "campaign 3", active: false>, #<Campaign id: 4, name: "campaign 4", active: false>], true=>[#<Campaign id: 2, name:

我有一个带有数组对象的哈希:

{
  false=>[#<Campaign id: 1, name: "campaign 1", active: false>, #<Campaign id: 3, name: "campaign 3", active: false>, #<Campaign id: 4, name: "campaign 4", active: false>], 
  true=>[#<Campaign id: 2, name: "campaign 2", active: true>]
} 
如果您可以使用
select\u all
方法获取散列数组,而不是对象数组,那么您不需要将对象转换为散列

ModelName.connection.select_all("select id, name from <table_name>;")
=> [{id:xxx, name: xxx}.......]
ModelName.connection.select_all(“select id,name from;”)
=>[{id:xxx,name:xxx}……]
在对象上使用方法

属性()公共

返回所有属性的哈希值,这些属性的名称作为键,属性的值作为值


请编辑更多信息。“仅编码”和“尝试此”答案是错误的,因为它们不包含可搜索的内容,并且没有解释为什么有人应该“尝试此”。
hash.each {|k,v| hash[k] = v.map{|e| {id: e[:id], name: e[:name]}}}
ModelName.connection.select_all("select id, name from <table_name>;")
=> [{id:xxx, name: xxx}.......]
hash = {
  false => [#<Campaign id: 1, name: "campaign 1", active: false>, #<Campaign id: 3, name: "campaign 3", active: false>, #<Campaign id: 4, name: "campaign 4", active: false>], 
  true  => [#<Campaign id: 2, name: "campaign 2", active: true>]
} 
hash.each {|k, v| hash[k] = v.map(&:attributes) }

{
  false => [{"id": 1, "name": "campaign 1", "active": false}, {"id": 3, "name": "campaign 3", "active": false}, {"id": 4, "name": "campaign 4", "active": false}], 
  true  => [{"id": 2, "name": "campaign 2", "active": true}]
}