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

标签 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: "campaign 2", active: true>]
} 

如何将上面的hash转化为hash

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

最佳答案

hash.each {|k,v| hash[k] = v.map{|e| {id: e[:id], name: e[:name]}}}

如果您可以使用select_all 方法获取散列数组,而不是对象数组,那么您就不需要将对象转换为散列。

ModelName.connection.select_all("select id, name from <table_name>;")
=> [{id:xxx, name: xxx}.......]

关于ruby-on-rails - 如何在 Rails 中将数组对象转换为散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33362994/

相关文章:

ruby-on-rails - rails : display @cars as a comma-separated list

ruby-on-rails - 如何在 Rails 3 事件记录中链接查询

ruby-on-rails - 我可以在服务对象中包含辅助方法吗?

使用 rbenv 的 Ruby 版本不断回落至 1.8.7

ruby-on-rails - Facebook 图形 API gem

ruby - 德语变音符号到字符串的十六进制表示

Ruby - 数组乘法或 JOIN 操作

database - 在 RoR 中清空我的 Sqlite3 数据库

javascript - 关于删除无关信息的 Rails 自动完成问题

ruby-on-rails - 阻止访客再次投票