我正在观看 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
是一种方法,所以我对这里发生的事情感到困惑。