No entiendo el argumento :& para el método de inyección en este ejemplo:
[1, 2].map do |id| my_custom_method(MyModel.find(id)) end).inject(:&).map(&:category).uniq.compact.sort :+ tiene sentido para mí:
[1, 2, 3].inject(:+)es lo mismo que:
[1, 2, 3].inject { |sum, number| sum + number } ¿Qué significa :& , como en el ejemplo anterior?
Si especifica un símbolo en su lugar, cada elemento de la colección se pasará al método nombrado de memo
Entonces & es solo el método Integer#&
Y bit a bit; cada bit en el resultado es 1 si ambos bits correspondientes en uno mismo y en otro son 1, 0 de lo contrario
[7, 5].inject(:&) # => 5es lo mismo que
7 & 5 # => 5y como funciona
7.to_s(2) # => "111" 5.to_s(2) # => "101" 7: 1 1 1 & & & 5: 1 0 1 -------- 5: 1 0 1