저는 MobileApp 모델을 가지고 있으며 을 사용하여 여러 개의 INNER JOIN
으로 복잡한 SQL 쿼리를 수행합니다. SQL 쿼리는 다음과 같습니다.find_by_sql이있는 ActiveRecord : 조인 된 테이블의 필드로 정렬
SELECT DISTINCT mobile_apps.*, satisfaction_scores.id, satisfaction_scores.score FROM mobile_apps
INNER JOIN bucket_applications ON mobile_apps.id = bucket_applications.mobile_app_id
INNER JOIN satisfaction_scores ON mobile_apps.id = satisfaction_scores.mobile_app_id
WHERE NOT EXISTS
(SELECT * FROM feeds
WHERE feeds.mobile_app_id = mobile_apps.id
AND feeds.target_id = 41
AND feeds.left IS TRUE) ORDER BY satisfaction_scores.score DESC;
그리고 저는 MobileApp.find_by_sql(<the_query>)
입니다.
제 문제는 MobileApp
을 SatisfactionScore
으로 정렬해야한다는 것입니다. 결과적으로 SELECT
필드에 score
을 추가하여 ORDER BY
의 점수를 처리해야합니다. SQL 쿼리가 올바르다 고 생각하지만 ActiveRecord는 mobile_apps
테이블의 SELECT
열이 아니기 때문에 MobileApp
의 잘못된 ID를 반환합니다.
MobileApp.find_by_sql(<the_query>) =>
[#<MobileApp id: 41>,
#<MobileApp id: 42>,
#<MobileApp id: 43>,
#<MobileApp id: 44>]
그러나
MobileApp.ids => [153, 156, 159, 162, 165]
그것을 할 수있는 더 좋은 방법이 있나요?
감사합니다.