2016-09-01 2 views
0

속성 당 제한된 수의 레코드를 가져 오는 방법이 있습니까? 예를 들어 author_id 속성의 Post 모델이있는 경우 모든 게시물을 가져오고 싶지만 작성자 당 최대 10 개를 가져오고 싶습니다.레일스 활성 레코드, 속성 당 한도

미리 감사드립니다.

답변

1

limit 메서드를 사용할 수 있습니다. User.limit(10)처럼

이 매우 순수 AR 솔루션되지 않습니다 10 사용자

0

를 검색 얻을 것이다, 그래서 당신의 실적과는 차이가있을 수 있습니다 :

Post.all.pluck(:author_id).uniq.map do |author_id| 
    Post.where(author_id: author_id).limit(10) 
end.flatten 

이 추가로 일부 사용자 지정 SQL 쿼리를 작성하여 최적화 할 수 있지만입니다 모두 내가 그 순간에 함께 갈 수 있습니다.

1

저자가 많은 게시물을 가지고 있다고 가정합니다. & 게시물은 작성자에게 속한 것입니다. 그런 다음 필요한 코드는 다음과 유사해야합니다.

authors = Author.joins(:posts) 
authors.includes(:posts).each do |author| 
author.post.limit(10) 
end 
관련 문제