おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

has_manyなモデルのid配列を取得するスマートなやり方

今日たまたまRailsのリファレンスを眺めていて見つけたのですが。

下記のようなBlogモデルとEntryモデルがあるとします。

class Blog < ActiveRecord::Base
  has_many :entries
end

class Entry < ActiveRecord::Base
  belongs_to :blog
end

Blogモデルのインスタンスである@blogに関連したentryのid配列を取得したい場合は、今までこんな感じでやってました。

  @blog.entries.find(:all, :select => "entries.id").map(&:id)

これでもいいですが、has_manyで提供されるメソッドを使うとこんなにスマートにかけます。

  @blog.entry_ids

Rails2.0くらいから追加されたようですね。知らなかったなー。