2013-12-17 272 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] }]