1. count メソッド
count メソッドは特定の条件を満たすレコードの数をデータベースから直接計算して返します
- 大量のデータセットでも迅速に結果を提供
count は ActiveRecord::Relation オブジェクトに適用されます
- 必要に応じて、列名を引数として受け取り、該当する列のレコード数を数えることができます。
- SQLの
COUNT 関数を直接使用
=> データを全て読み込むことなく、迅速に数を算出できます
- ただし、ジョインや複雑なクエリ構造が含まれる場合は、クエリの最適化に注意が必要です
active_users_count = User.where(active: true).count
2. find_by_sql メソッド
find_by_sql メソッドは開発者が直接書いたSQLクエリを実行することができます
- このメソッドは標準の ActiveRecord クエリメソッドで処理が困難な複雑なデータベースクエリを実行する際に役立ちます
- 戻された結果を ActiveRecord オブジェクトにマッピングし、その結果をすぐに Rails アプリケーションで利用可能
- SQLを直接記述するため、SQLインジェクションなどのセキュリティ問題に注意が必要
- クエリが複雑になるほど、メンテナンスが困難になる可能性があるため、使用時にはクエリの安全性と効率性を検証するプロセスが必要です。
sql = "SELECT * FROM users WHERE age >= 30"
older_users = User.find_by_sql(sql)