2016-09-01 8 views
0

属性ごとに限られた数のレコードをフェッチする方法はありますか?たとえば、author_idという属性のモデルPostがある場合は、すべての投稿を取得したいのですが、著者ごとに最大10個を取得しますか?Railsアクティブレコード、属性ごとの制限

ありがとうございます!

答えて

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 
関連する問題