簡體   English   中英

Ruby:從Hash => Set創建哈希

[英]Ruby: Make hash from Hash => Set

我有一個聯接表,用於查找訂單的可用服務。 該表中的是utility_idcompany_id

我想要的是一個組(哈希),其中鍵是實用程序名稱,值是相應公司的哈希值。

我得到了以下...

Service.find(:all).to_set.classify { |service| Utility.find(service.utility_id).name }

...這很好地給了我一個哈希,其中的鍵是實用程序名稱,但值是Service記錄的Set ,而不僅僅是公司名稱(我不需要實際的記錄),而且我不能弄清楚如何進行所需的哈希:

# example of what I would like to have
{"electricity" => {"conEd" => 1, "Dominian" => 2}, "gas" => {"conEd" => 1}} 
# where the key is Utility.name, and the value-hash is {Company.name => Company.id}

我該怎么做?

find(:all)向我建議Rails,因此,假設您在Utility和Service模型之間正確地擁有HABTM,此代碼段適用於我的測試環境:

results = Hash.new
Utility.find(:all).each do |utility|
  results[utility.name] = Hash.new
  utility.companies.each do |company|
    results[utility.name][company.name] = company.id
  end
end
results

哪個產生

{"Communications"=>{"InternetCo"=>2, "PhoneCo"=>1}, "Energy"=>{"ElectricCo"=>4, "GasCo"=>3, "OilCo"=>5}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM