J'ai une table de jointure que j'utilise pour trouver des services disponibles pour un bon de commande; dans cette table est le utility_id
et un company_id
.Ruby: Faire un hash à partir de Hash => Set
Ce que je veux est un groupe (hachage) où les clés sont les noms d'utilité et les valeurs sont des hachages des sociétés correspondantes.
je suis arrivé ce qui suit ...
Service.find(:all).to_set.classify { |service| Utility.find(service.utility_id).name }
... qui me donne très bien un hachage dont les clés sont les noms des services publics, mais les valeurs sont Set s des enregistrements de service, non juste les noms de l'entreprise (je ne suis pas besoin des dossiers réels), et je ne peux pas comprendre comment je ferais le hachage Je veux:
# 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}
Comment puis-je faire cela?
Je suis confus au sujet de l'origine de "company-1". Si c'est juste une séquence numérique, ne préféreriez-vous pas avoir un tableau comme valeur de hachage? Donc: '{" utility-1 "=> [company_id, company_id]," utilitaire-2 "=> [société_id, société_id]}' – DigitalRoss
Désolé; Je voulais dire qu'une «compagnie-1» n'était que le nom d'une compagnie distincte d'une autre «compagnie-2», et non pas qu'elles incrémentaient réellement les valeurs. Edité ci-dessus. – neezer