たとえば、
class Member < ActiveRecord::Base end
というモデルがあり、membersテーブルにはnameカラムがあるとする。
すると、
members = Member.find(:all) member_names = members.map(&:name)
というようにmap(またはcollect)が使える。
これは、以下のようにActiveSuppoprtにSymbol#to_procが定義されているからだ。
class Symbol def to_proc Proc.new { |obj, *args| obj.send(self, *args) } end end
Symbol#to_procのおかげで、上記のmapのコードは、下記と同じことになる。
members = Member.find(:all) member_names = members.map { |member| member.name }