最近データベースへの問い合わせを行うタイミングについて、考える時間があったので少しまとめてみました。
クエリメソッドとは
条件式やソート、グループ化、範囲抽出、結合などを行うための総称。
all/find/first/lastなどのメソッドでできることが限られているので、多くのクエリメソッドを使用する。
▼主なクエリメソッド
メソッド | 概要 |
---|---|
where | 条件式で絞り込み |
order | 並び替え |
select | 列の指定 |
limit | 抽出するレコード数の指定 |
offset | 抽出を開始する数を指定 |
group | 特定のキーで結果をグループ化 |
having | GROUP BYでさらに制約を付与 |
joins | 他のテーブルと結合 |
クエリメソッドの特徴
その場でデータベースにアクセスしない。
条件句を追加した結果をActiveRecord::Relationオブジェクトとして返すだけ。結果が必要になったところで、初めて、データベースへの問い合わせを行う。
これを遅延ロードという。
またメソッド呼び出しを連鎖して、条件を積み上げることができることから、クエリメソッドの性質や記法のことをメソッドチェーンという。
メソッドチェーンを利用することで、複合的な条件も自然なコードで指定できるようになる。