假設我有這個數組通過元素散列分組
x=[{:shipping_id=>2, :fsn=>"ab", :price=>300, :quantity=>1},
{:shipping_id=>3, :fsn=>"abc",:price=>500, :quantity=>2},
{:shipping_id=>2, :fsn=>"abcd",:price=>300,:quantity=>3},
{:shipping_id=>4, :fsn=>"abx", :price=>600,:quantity=>1},
{:shipping_id=>3, :fsn=>"abb", :price=>400,:quantity=>1}]
我想通過唯一運送ID組,但在這種情況下,我們只是一羣被shipping_id = 2
所以我做x.select! {|y| y[:shipping_id]==2}
這給了我
[{:shipping_id=>2, :fsn=>"ab",:price=>300,:quantity=>1}, {:shipping_id=>2, :fsn=>"abcd",:price=>300,:quantity=>3}]
但問題是,我想以這種形式
我的結果我該怎麼辦?我可以在幾行中做到這一點,但有沒有優化的方式呢?
更新 - : 最終工作溶液(我的解決方案) -
控制器
new_params={}
order_hash.each do |row|
new_params=row.convert_to_params(new_params)
end
params.merge!(new_params)
型號
def convert_to_params(new_params)
item=self.instance_values.symbolize_keys
item.each do |k, v|
new_params[k].nil? ? new_params[k]=[v] : new_params[k].push(v)
end
return new_params
end
這給了我希望的結果
我不同意這個過於本地化。我不認爲這個問題應該被關閉。這個問題的核心有一個通用的分組算法,可以用於其他人。 – 2013-04-25 13:11:04
@JimStewart - 我同意,我真的不認爲這是一個普通的問題。無論如何,愛我的解決方案是相當整潔的事實。 – 2013-04-26 19:22:48