Кажется, я сталкиваюсь с этим очень часто. Мне нужно построить Hash из массива, используя атрибут каждого объекта в массиве в качестве ключа.
Допустим, мне нужен хэш примера использования объектов ActiveRecord, основанных на их идентификаторах.
Общий способ:
ary = [collection of ActiveRecord objects]
hash = ary.inject({}) {|hash, obj| hash[obj.id] = obj }
Другой способ:
ary = [collection of ActiveRecord objects]
hash = Hash[*(ary.map {|obj| [obj.id, obj]}).flatten]
Путь мечты:
Я мог и мог бы создать это сам, но есть ли что-нибудь в Ruby или Rails, которое это сделает?
ary = [collection of ActiveRecord objects]
hash = ary.to_hash &:id
#or at least
hash = ary.to_hash {|obj| obj.id}