2009年5月18日月曜日

RailsでSQLを直打ちする方法 ~使うメソッドの違いによる戻り値の違い~

RailsでSQLを直打ちする方法は2種類あるらしい。
でも、それぞれの戻り値のデータ型に違いがある。

①find_by_sqlを使う方法
②select_allを使う方法

find_by_sqlを使う方法だと、戻り値はActiveRecordオブジェクトの配列となり、select_allを使うとハッシュの配列となる。

なので、たとえばarticlesテーブルのモデルArticleに対して、このテーブルがdetailというカラムを持っているとしよう。このとき、

articles = Articles.find_by_sql("select * from articles")

とすると、articlesテーブルのある行のdetailカラムへのアクセスは、

articles[0].detail

となり、

articles = Articles.connection.select_all("select * from articles")

とすると、

articles[0][detail]

となる。
ちょっと注意ですね。

0 件のコメント: