Possible Duplicate:
What does map(&:name) mean in Ruby?

Post.all.map(&:id) 

会回来的

 => [1, 2, 3, 4, 5, 6, 7, ................] 

map(&:id)是什么意思?尤其是&.

推荐答案

&符号用于表示以下参数应被视为给定给该方法的块.这意味着,如果它还不是Proc对象,将调用其to_proc方法将其转换为Proc对象.

因此,你的例子的结果是

Post.all.map(&:id.to_proc)

这反过来相当于

Post.all.map { |x| x.id }

因此,它迭代Post.all返回的集合,并用对每个项调用的id方法的结果构建一个array.

这是因为Symbol#to_proc创建了一个进程,该进程接受一个对象,并使用其上的符号名调用该方法.它主要是为了方便,节省一些打字时间.

Ruby-on-rails相关问答推荐

Rails 7.1中的覆盖脚手架控制器

将两个日期之间的差值转换为Ruby中的iso8601持续时间(如果需要,还可以使用Rails)

使用has_many_through关联创建记录 – Ruby on Rails

一对多关联 counter_cache 在 Rails 中无法正确重新加载

如何断言 Ruby 单元测试中的错误消息?

NoMethodError:Puma::Events:Class 的未定义方法字符串

键入rails 控制台无法启动?

使用brew 软件安装了 elasticsearch,但找不到配置文件

Time.zone.now.to_date 是否等同于 Date.today?

Rails 和 OS X:如何安装 rmagick?

如何将 yaml 文件解析为 ruby​​ 哈希和/或数组?

bundle和gem安装的区别?

不允许请求来源:使用 Rails5 和 ActionCable 时的 http://localhost:3001

在 PostgreSQL 中强制字符串的最大长度

如何使用 Ruby 在现有 PDF 上编辑或书写?

Ruby 和 Ruby on Rails 离线 API 文档

错误未初始化的常量 AWS (NameError)

在 Rails 应用程序中处理大文件上传的最佳方法是什么?

设计:在注册期间禁用密码确认

您如何访问设计控制器?