1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

クエリメソッド、遅延ロードについて

Posted at

最近データベースへの問い合わせを行うタイミングについて、考える時間があったので少しまとめてみました。

クエリメソッドとは

条件式やソート、グループ化、範囲抽出、結合などを行うための総称。
all/find/first/lastなどのメソッドでできることが限られているので、多くのクエリメソッドを使用する。

主なクエリメソッド

メソッド 概要
where 条件式で絞り込み
order 並び替え
select 列の指定
limit 抽出するレコード数の指定
offset 抽出を開始する数を指定
group 特定のキーで結果をグループ化
having GROUP BYでさらに制約を付与
joins 他のテーブルと結合
クエリメソッドの特徴

その場でデータベースにアクセスしない。
条件句を追加した結果をActiveRecord::Relationオブジェクトとして返すだけ。結果が必要になったところで、初めて、データベースへの問い合わせを行う。
これを遅延ロードという。

またメソッド呼び出しを連鎖して、条件を積み上げることができることから、クエリメソッドの性質や記法のことをメソッドチェーンという。
メソッドチェーンを利用することで、複合的な条件も自然なコードで指定できるようになる。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?