Понимание [ClassOne, ClassTwo] .each (&: my_method) [дубликат]

Возможный дубликат:
Что означает карта (&: name) в Ruby?

Я смотрел Railscast и увидел этот код.

[Category, Product].(&:delete_all)

Что касается очистки базы данных.

Я спросил о линии в IRC и мне сказали

(&:delete_all)

был ярлык для

{|model| model.delete_all}

Я проверил это со следующим

class ClassOne
  def class_method
    puts 1
  end
end

class ClassTwo
  def class_method
    puts 2
  end
end

[ClassOne, ClassTwo].each(&:class_method)

Я получил сообщение об ошибке

Wrong Argument type Symbol (expected Proc)

Я тоже пробовал

one = ClassOne.new
two = ClassTwo.new

[one, two].each(&:class_method)

Но это все еще не удалось.

Если бы я изменил его, чтобы прочитать

[one, two].each{|model| model.class_method}

Все заработало как положено.

Итак, что же&:delete_all на самом деле делать? Документы говорятdelete_all это метод, поэтому я не понимаю, что здесь происходит.

Ответы на вопрос(2)

Ваш ответ на вопрос