2012-12-05 39 views
18

有沒有一種方法可以將activerecord中的記錄從已經由id而不是數組索引的散列中取出? 這是目前在做什麼IM:從activerecord獲取索引散列

results = {} 
Table.select { |current| results[current.id] = current } 

林假設必須有,做一個方法是什麼?

回答

31
Table.all.index_by { |t| t.id } 

或者:

Table.all.index_by(&:id) 

如果你到整個簡潔的東西。

+0

謝謝吉姆!如果我想進行就地修改,該怎麼辦? –

+1

我不知道這樣做的好方法。你可以做一些像'Hash [Table.all.map {| t | t.something =「覆蓋」; [t.id,t]}]'。如果您試圖隨時更改記錄,那麼存在潛在的問題,但它可能對您有所幫助。 –

+0

鏈接到文檔:http://api.rubyonrails.org/classes/Enumerable.html#method-i-index_by – sp89