Rails Active Record,每个属性限制

时间:2016-09-01 16:50:45

标签: ruby-on-rails activerecord rails-activerecord

是否有办法为每个属性获取有限数量的记录。例如,如果我的模型Post具有属性author_id,我想要获取所有帖子,但每个作者最多10个?

提前致谢!

3 个答案:

答案 0 :(得分:1)

您可以使用limit方法。

User.limit(10)一样,将获得检索10个用户

答案 1 :(得分:1)

我假设您的作者有很多帖子&帖子属于作者。 然后,所需的代码应类似于以下内容:

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

答案 2 :(得分:0)

这不是一个非常纯粹的AR解决方案,因此您的表现可能会有所不同:

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

这可以通过编写一些自定义SQL查询进一步优化,但这就是我现在能想到的全部内容。