Arelによって変わったActiveRecord
- 編集部の見解や意向と異なる内容の場合があります
- 編集部は内容について正確性を保証できません
- 画像が表示されない場合、編集部では対応できません
- 内容の追加・修正も編集部では対応できません
ヒューマンリソシア株式会社はコラム「Arelによって変わったActiveRecord」を公開しました。
Rails 3.0になって大きく変わったところは非常に多く、 Asset pipelineやRoutingの変化など、 ウェブサービスを開発する上で手が届かなかったかゆいところに手が加えられています。 ただし互換性が犠牲にしてでも新しく、より良いものを積極的に取り入れていくため、 「あまり頻繁にバージョンアップされるとついていけない」なんて言う声が聞こえてきたりします。 ただRailsが生み出すエコシステムには、その大変さを乗り越えるだけの大きな利益があるので、 情報を集めて取り込んでみましょう。
閑話休題。さて今回はそのRails 3.0で新しく生まれ変わったActiveRecordのお話です。 Rails 3.0になって、ActiveRecordはArelというSQLを簡単に、直感的に生成できる プラグインを使うようになりました。 このArelというのは「Relational Algebra」または「Active Relation」の略と言われていて、 「関係代数」というものを扱うためのライブラリです。 データベースのことを「Relational Database」というように、 データベースで扱う「関係」を代数のように演算できると考えればわかりやすいでしょうか。 例えばユーザモデルUserで、属性statが3のレコードをregisted_atの順で 取得するには
User.where(:stat => 3).order('registed_at')
のようになります。このwhereメソッドがSQLのWHERE句を、 orderメソッドがORDER BY句に対応しています。 この他にも主に使うメソッドとして以下のようなものがあります。
メソッド SQL
where WHERE
order ORDER BY
GROUP GROUP BY
select SQLのSELECTで指定するカラム名
includes JOIN句で結合するテーブル
limit LIMIT
offset OFFSET
count 最終的にSELECT COUNT(*)とする
この続きは以下をご覧ください
http://resocia.jp/column/324/
ソーシャルもやってます!