概要
タイトルの通りです。
利用機会は多いものの、混乱してしまうことが多いのでまとめることにしました。
maximum
- 概要: ActiveRecordの集計メソッド
- 機能: データベースレベルで最大値を取得
- 内部動作: SQLの
MAX
関数を利用 - メリット: データベース側で計算するため、パフォーマンスが高い
max
- 概要: Rubyの
Enumerable
モジュールのメソッド - 機能: コレクション内の最大値をRuby側(メモリ)で計算
- 使用時の注意:
- ActiveRecordのリレーションに対して使用すると、全てのレコードを一度に取得
- データ量が多いとメモリ消費や処理時間が増大
max_by
- 概要: Rubyの
Enumerable
モジュールのメソッド - 機能: ブロック内で指定した基準に基づき、最大の要素を取得
- 特徴:
- 評価基準を直接指定でき、コードが明確
-
max
同様、全レコードを取得してから処理(データ量が多いとメモリ消費や処理時間が増大)
まとめ
以上です。
基本的には maximum
を利用するのが良いでしょう。