« Ruby on Railsで複数のデータベースを使用する方法 | メイン | パフォーマンスのため、RMagickを使わずImageMagickを使う »

ActiveRecordでオブジェクトを作成しないSelect

ActiveRecordでオブジェクトを作成しないSelect。
オーバーヘッドが少ないので、オブジェクトが必要ない場合はパフォーマンスが向上する。

select_value は最初の一件を返す。
値は文字列で返される。

>> ActiveRecord::Base.connection.select_value('SELECT zip_code FROM addresses')
=> "1000000"

select_valuesは配列で返す。
値は文字列で返される。

>> ActiveRecord::Base.connection.select_values('SELECT zip_code FROM addresses LIMIT 3')
=> ["1000000", "1020072", "1020082"]

実践 Rails -強力なWebアプリケーションをすばやく構築するテクニック』に紹介されていた方法。
メソッドを一つ追加して、select_valuesを使いやすくする。

class << ActiveRecord::Base
  def select_values(sql)
    connection.select_values(sanitize_sql(sql))
  end
end

sql = %(SELECT id FROM people WHERE last_name = ?)
last_name = %(O'Reilly)
Person.select_values [sql, last_name] #=> ["12", "42"]

トラックバック

このエントリーのトラックバックURL:
http://www.gesource.jp/mt/mt-tb.cgi/957

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2009年04月24日 18:55に投稿されたエントリーのページです。

ひとつ前の投稿は「Ruby on Railsで複数のデータベースを使用する方法」です。

次の投稿は「パフォーマンスのため、RMagickを使わずImageMagickを使う」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35