Кажется, я часто сталкивался с этим. Мне нужно построить хэш из массива, используя атрибут каждого объекта в массиве в качестве ключа.
Предположим, что мне нужен хэш примера, использует объекты 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}