ActiveRecord tips
気づいたこと、ちょっとしたことを書いていこうかな。
対象バージョン 2.0.2
SQLを生成
ActiveRecord::Base.findが内部で使ってるメソッドを呼べば、findと同じパラメータを使って、同様のSQLを組み立てられる。サブクエリなんかに使えるよね。行儀悪いけど。
Shop.send(:construct_finder_sql, {:conditions => ["id IN (?)", [1,2,3]]})
SQLを実行して、結果をカラム名をキーとするハッシュの配列で得る
ActiveRecord::ConnectionAdapters::AbstractAdapter#select_allを使う。
# PostgreSQLでテーブル名一覧を取得 Shop.connection.select_all(<<-SQL) SELECT SCHEMANAME, TABLENAME FROM PG_TABLES WHERE NOT TABLENAME LIKE 'pg%' AND NOT SCHEMANAME = 'information_schema' ORDER BY SCHEMANAME, TABLENAME SQL # => [{"schemaname"=>"public", "tablename"=>"shops"}, ...]