ActiveRecordオブジェクトの配列のmap(collect)

たとえば、

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 }

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください