Maneira mais limpa de criar um Hash a partir de uma matriz
Parece que me deparo com isso com muita frequência. Eu preciso criar um Hash a partir de uma matriz usando um atributo de cada objeto na matriz como a chave.
Digamos que eu precise de um hash de exemplo, use objetos ActiveRecord codificados por seus IDs.
ary = [collection of ActiveRecord objects]
hash = ary.inject({}) {|hash, obj| hash[obj.id] = obj }
Outra maneira:
ary = [collection of ActiveRecord objects]
hash = Hash[*(ary.map {|obj| [obj.id, obj]}).flatten]
Dream Way: Eu poderia e poderia criar isso sozinho, mas há alguma coisa no Ruby ou no Rails que irá fazer isso?
ary = [collection of ActiveRecord objects]
hash = ary.to_hash &:id
#or at least
hash = ary.to_hash {|obj| obj.id}