[RUBY-ON-RAILS] PGError는 오류 : 골재는 객체의 AR 쿼리와 has_many 개체에 WHERE 절에 사용할 수 없습니다
RUBY-ON-RAILSPGError는 오류 : 골재는 객체의 AR 쿼리와 has_many 개체에 WHERE 절에 사용할 수 없습니다
has_many 협회에서 다음 쿼리를 실행합니다. 권장 승인을 has_many.
나는 3과 PostgreSQL 레일, 실행하고 있습니다 :
Recommendation.joins(:approvals).where('approvals.count = ?
AND recommendations.user_id = ?', 1, current_user.id)
이것은 다음과 같은 오류를 반환 : https://gist.github.com/1541569
해결법
-
==============================
1.오류 메시지를 알려줍니다 :
오류 메시지를 알려줍니다 :
() 계산은 총 함수이다. 그에 대한 HAVING 절을 사용합니다. 쿼리는 다음과 같이 수 :
SELECT r.* FROM recommendations r JOIN approvals a ON a.recommendation_id = r.id WHERE r.user_id = $current_user_id GROUP BY r.id HAVING count(a.recommendation_id) = 1
이 테이블의 기본 키에 의해 GROUP에 충분하다 PostgreSQL을 9.1 이상 (recommendations.id를 추정하는 것은 PK)입니다. 포스트 그레스 버전 9.1 전에 GROUP BY 목록에 집계되지 않은 SELECT 목록의 모든 열을 포함했다. 권장. * SELECT 목록에서, 그 테이블의 모든 단일 열 것입니다.
나는 PostgreSQL을 9.1의 릴리스 노트를 인용 :
어느 쪽이든,이 같은 일을, 간단하고 빠른 :
SELECT * FROM recommendations r WHERE user_id = $current_user_id AND (SELECT count(*) FROM approvals WHERE recommendation_id = r.id) = 1;
A를 피 곱 행이 사전 가입, 당신은 그들을 다시 집계 할 필요가 없습니다.
-
==============================
2.당신 같은 외모는 열라는 이름의 수를 가지고 PostgreSQL는 계수 집계 함수로 해당 열 이름을 해석한다. 귀하의 SQL은 다음과 같이 끝 :
당신 같은 외모는 열라는 이름의 수를 가지고 PostgreSQL는 계수 집계 함수로 해당 열 이름을 해석한다. 귀하의 SQL은 다음과 같이 끝 :
SELECT "recommendations".* FROM "recommendations" INNER JOIN "approvals" ON "approvals"."recommendation_id" = "recommendations"."id" WHERE (approvals.count = 1 AND recommendations.user_id = 1)
오류 메시지는 특히 approvals.count를 가리키는 :
LINE 1: ...ecommendation_id" = "recommendations"."id" WHERE (approvals.... ^
내 PostgreSQL의 (9.0)에서 그 오류를 재현 할 수는 없지만 어쩌면 당신은 다른 버전을 사용하고 있습니다. 귀하의 경우에 해당 열 이름을 인용 더블보십시오 :
Recommendation.joins(:approvals).where('approvals."count" = ? AND recommendations.user_id = ?', 1, current_user.id)
그 종류의 물건을 밖으로 그때 뭔가 다른에 approvals.count 열 이름을 변경하는 것이 좋습니다 싶다면 그래서 당신은 더 이상 그것에 대해 걱정할 필요가 없습니다.
from https://stackoverflow.com/questions/8684486/pgerror-error-aggregates-not-allowed-in-where-clause-on-a-ar-query-of-an-objec by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] ERROR : 오류 설치하는 rmagick : Windows의 루비 2.2 (0) | 2020.02.26 |
---|---|
[RUBY-ON-RAILS] Omniauth : 콜백은 "잘못된 자격 증명"을 반환 실패를 발사하지 (0) | 2020.02.26 |
[RUBY-ON-RAILS] 이 RSpec에 / 카피 바라 테스트를 통과하는 원인 왜 후크 후에 "잠 1"을 추가합니까? (0) | 2020.02.26 |
[RUBY-ON-RAILS] 단일 페이지 응용 프로그램 및 CSRF 토큰 (0) | 2020.02.26 |
[RUBY-ON-RAILS] 왜 루비 온 레일즈는 "음이 배열 'ruby_check_sizeof_voidp'의 크기"오류가 발생 설치합니까? (0) | 2020.02.26 |