매우 간단한 관계형 데이터베이스를 가진 매우 간단한 Rails 앱이 있습니다. 카테고리에는 많은 샘플이 있습니다. X 번호의 샘플이있는 범주를로드하기 만하면됩니다. 그런데, 잘 작동(다소 복잡한) 원시 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을 사용하는 것이 몹시 레일 같은 아니에요 :
일반 SQL에서 나는 같은 것을 할 것입니다. 그리고 분명히 그 범주를 모델 인스턴스로 가져오고 싶습니다.
어떻게하면 ActiveRecord 또는 Arel 쿼리에 다시 쓰려고할까요? 심지어 실현 가능한가, 아니면 일반 SQL을 사용해야합니까? 아마도 그 일을 아주 간단하게하는 방법이 있을까요? 이 페이지에 설명 된대로
아, 아주 멋지고 깨끗합니다! 범주에'samples_count' 컬럼을 추가하려고 생각하고 있었지만 Rails가 최신 정보를 유지하기 위해 로직을 내장하고 있는지 알지 못했습니다. 그 자신을 쓰고 싶지 않았어, 그래서 그것을 추구하지 않았다 :) – Flambino