2014-09-18 2 views
0

Rails에서 활성 레코드 객체/메소드를 사용하여 표현할 수없는 다음과 같은 SQL이 있습니다.복잡한 SQL 쿼리를 Rails ActiveRecord 표현식으로 변환

SELECT users.*, count(followings.user_id) as expr1 FROM users 
    inner join followings on id = follows where id in (2,3,4) 
    group by followings.follows order by expr1 desc; 

분명히 [2,3,4]는 임의의 ID 배열로 대체됩니다.

이 쿼리는 아무런 문제가 없으며 원하는 결과를 제공합니다. 하지만 'ActiveRecord'방식으로 표현하는 방법에 큰 어려움을 겪고 있습니다.

사용자 모델을 번호 팔로어가 주문하려면 어떻게해야합니까?

+0

모델 설정 방법은 무엇입니까? (나는 모델들 사이의 관계를 요구하고 있는데, 사용자 has_many : follows, 다음 belongs_to : user라고 가정한다.) – apeniche

답변

0

이 쿼리를 시도 할 수 있습니다 :

User.select("users.*, count(followings.user_id)").joins(:followings) 
.where("users.in (?)", [2,3,4]).group_by("followings.follows") 

당신이 얻는 경우 다른 오류를 알려 주시기 바랍니다.

+0

이것은 좋은 해결책이며 (where 조건에 오류가 있음) - 그러나 will_paginate로 제대로 그룹화하거나 제대로 플레이하지 못합니다. 대신 올바르게 작동하도록 find_by_sql을 사용해야했습니다. – Ash

관련 문제