非常に単純なリレーショナルデータベースを持つ非常にシンプルなRailsアプリケーションがあります。カテゴリには多数のサンプルがあります。私は単純にX個のサンプルを持つカテゴリをロードしたいと思います。ところで、うまく動作しますが、それは生のSQLを使用するためにひどくRailsのようなではありません(やや複雑な)生のSQLクエリをActiveRecord/Arelに変換しますか?
SELECT
categories.*
FROM
categories
JOIN
(SELECT
category_id, COUNT(*) as sample_count
FROM
samples
GROUP BY
category_id
) AS subselect
ON
categories.id=subselect.category_id
WHERE
subselect.sample_count = X; -- where X is whatever
:私はこのような何かをするだろう、プレーンSQLで
。そして、明らかに私はこれらのカテゴリをモデルインスタンスとして取得したいと思います:
どうすればActiveRecordやArelクエリに書き直すことができますか?それは実現可能なのでしょうか、それとも普通のSQLを使うべきですか?おそらくそれを行うための単純な方法はありますか?
ああ、とても素敵で清潔です!カテゴリに 'samples_count'カラムを追加することを考えていましたが、Railsに最新の状態を維持するためのロジックが組み込まれているかどうかはわかりませんでした。私はそれを追求しなかったので、自分自身を書くことを望んでいませんでした:) – Flambino