속성 당 제한된 수의 레코드를 가져 오는 방법이 있습니까? 예를 들어 author_id
속성의 Post
모델이있는 경우 모든 게시물을 가져오고 싶지만 작성자 당 최대 10 개를 가져오고 싶습니다.레일스 활성 레코드, 속성 당 한도
미리 감사드립니다.
속성 당 제한된 수의 레코드를 가져 오는 방법이 있습니까? 예를 들어 author_id
속성의 Post
모델이있는 경우 모든 게시물을 가져오고 싶지만 작성자 당 최대 10 개를 가져오고 싶습니다.레일스 활성 레코드, 속성 당 한도
미리 감사드립니다.
limit
메서드를 사용할 수 있습니다. User.limit(10)
처럼
이 매우 순수 AR 솔루션되지 않습니다 10 사용자
를 검색 얻을 것이다, 그래서 당신의 실적과는 차이가있을 수 있습니다 :
Post.all.pluck(:author_id).uniq.map do |author_id|
Post.where(author_id: author_id).limit(10)
end.flatten
이 추가로 일부 사용자 지정 SQL 쿼리를 작성하여 최적화 할 수 있지만입니다 모두 내가 그 순간에 함께 갈 수 있습니다.
저자가 많은 게시물을 가지고 있다고 가정합니다. & 게시물은 작성자에게 속한 것입니다. 그런 다음 필요한 코드는 다음과 유사해야합니다.
authors = Author.joins(:posts)
authors.includes(:posts).each do |author|
author.post.limit(10)
end