2013-08-01 2 views
0

has_many :feedbacks, :through => another_modelPost 모델이 있습니다. Feedback 모델에는 :name 특성이 있습니다.연결 속성 값을 기반으로 활성 레코드 쿼리

feedbacks의 이름이 두 개 이상인 Posts이 필요합니다. 예를 들어

:

포스트 하나의 이름으로 피드백을 가지고 [처럼, 같이,처럼, 스팸]

후 두 [닫기 비추천, 스팸]의 이름으로 피드백이있다.

나는 내가이 group("name")having count > 2이 필요 알고 Posts.joins(:feedbacks).where

... 단지 포스트 하나

가 가장 내가 지금까지 IS 입수했습니다 싶지만 모두 함께 문자열 수 없습니다 그 조항들은 바르게. 도움에 대한 올바른 쿼리

편집

Posts.joins(:another_models).group("posts.id", "another_models.feedback_id") .having("COUNT(another_models.feedback_id) >= ?", 2)

감사합니다.

답변

1
Post.joins(:feedbacks).group("posts.id").having("COUNT(feedbacks.id) > 2") 
+0

그게 전부를 다음과 같습니다. 그래서 필자의 예제에서 Post 2는 그 배열에 2 개 이상의 feedbacks.id가 있기 때문에 여전히 끌어 들여집니다. –

1

시도하지만 그것도 계산하기 전에 feedbacks.name 그룹화되지 않고, 가까운

Post.joins(:feedbacks).group("posts.id").having("COUNT(DISTINCT(feedbacks.name)) < COUNT(feedbacks.id)") 
+0

나는 이것이 효과가있을 것이라고 생각한다. 나는 약간의 시험 후에 되돌아 가서 올바른 것으로 표시 할 것이다. 감사. –

+0

이것은 정확하지 않았지만 나를 가까이에 대한 upvote. 감사. –