2013-12-17 267 views
2

你能帮我解决一些问题吗? 我有数组从数据库这样拆分数组。红宝石

str = Hiring::Tag.all 
    Hiring::Tag Load (0.1ms) SELECT `hiring_tags`.* FROM `hiring_tags` 
=> [#<Hiring::Tag id: 1, name: "tag1", created_at: "2013-12-10 11:44:39", updated_at: "2013-12-10 11:44:39">, 
    #<Hiring::Tag id: 2, name: "tag2", created_at: nil, updated_at: nil>, 
    #<Hiring::Tag id: 3, name: "tag3", created_at: nil, updated_at: nil>, 
    #<Hiring::Tag id: 4, name: "wtf", created_at: "2013-12-11 07:53:04", updated_at: "2013-12-11 07:53:04">, 
    #<Hiring::Tag id: 5, name: "new_tag", created_at: "2013-12-11 10:35:48", updated_at: "2013-12-11 10:35:48">] 

我需要分割该阵列是这样的:

data:[{id:1,name:'tag1'},{id:2,name:'tag2'}, 
      {id:3,name:'tag3'},{id:4,name:'wtf'},{id:5,name:'new_tag'}] 

请帮助我!

+0

它已经回答[红宝石:组ActiveRecord对象的散列数组] [1] [1]:HTTP:/ /stackoverflow.com/questions/5490582/ruby-group-an-array-of-activerecord-objects-in-a-hash –

回答

3

,如果你使用ActiveRecord 4.0

Hiring::Tag.pluck(:id, :name).map{ |id, name| {id: id, name: name} } 
0

你可以试试下面的代码。

Hiring::Tag.all.inject({}) { |h, f| h[f.name.to_sym] = f.value; h } 

OR

Hiring::Tag.all.map { |f| [f.name.to_sym, f.value] }]