(&:id)在Product.all.map(&:id)中究竟做了什么

时间:2013-08-30 01:48:51

标签: ruby-on-rails ruby block proc

以下是我试图解决的代码行:

Category.all.map(&:id).each { |id| Category.reset_counters(id, :products) }

希望有人能帮助我理解(&:id)正在做什么以及它如何影响其余部分?我相信它会将符号:id变成 proc ,它会响应id?!?但后来却让人感到困惑......

提前致谢!

1 个答案:

答案 0 :(得分:3)

Category.all.map(&:id)

的简写
Category.all.map { |a| a.id }

关于它如何影响该行的其余部分,上一部分将所有id值作为单个Array返回。然后将Array个ID传递给each的另一个调用,该调用会将每个ID迭代地传递到reset_counters