Convertir le Tableau des objets de valeur de Hachage avec un champ comme clé

J'ai un Tableau d'objets:

[
  #<User id: 1, name: "Kostas">,
  #<User id: 2, name: "Moufa">,
  ...
]

Et je veux le convertir en une valeur de Hachage avec la id que les clés et les objets comme les valeurs. Maintenant je ne l'aime tellement mais je savoir il ya une meilleure façon:

users = User.all.reduce({}) do |hash, user|
  hash[user.id] = user
  hash
end

De la sortie attendue:

{
  1 => #<User id: 1, name: "Kostas">,
  2 => #<User id: 2, name: "Moufa">,
  ...
}
  • J'étais en train de regarder Énumérable#group_by, et il était presque à ce que je cherche. Je pensais simplement qu'il existe une version de il la au lieu de construire des tableaux de valeurs, il est plus agressif et conserve une seule valeur.
InformationsquelleAutor Kostas | 2013-04-02