Understanding [ClassOne, ClassTwo] .each (&: my_method) [duplicado]
Posible duplicado:
¿Qué significa map (&: name) en Ruby?
staba viendo un railscast y vi este código.
[Category, Product].(&:delete_all)
En lo que respecta a borrar una base de datos.
Pregunté por la línea en IRC y me dijeron que
(&:delete_all)
fue un atajo para
{|model| model.delete_all}
Lo probé con el siguiente
class ClassOne
def class_method
puts 1
end
end
class ClassTwo
def class_method
puts 2
end
end
[ClassOne, ClassTwo].each(&:class_method)
Recibí un error que decía
Wrong Argument type Symbol (expected Proc)
También probé
one = ClassOne.new
two = ClassTwo.new
[one, two].each(&:class_method)
Pero eso todavía falló.
Si lo modifiqué para leer
[one, two].each{|model| model.class_method}
Todo funcionó como se esperaba.
Entonces, ¿qué hace&:delete_all
realmente hacer? Los documentos dicendelete_all
es un método, así que estoy confundido sobre lo que está sucediendo aquí.