【发布时间】:2011-07-16 19:59:10
【问题描述】:
例如,我有一个博客对象,该博客有很多帖子。我想预先加载第一个博客对象,并包括它的前 10 篇文章。目前我会做@blogs = Blog.limit(4),然后在视图中使用@blogs.posts.limit(10)。我很确定有更好的方法可以通过 Blog.include(:posts).limit(:posts=>10) 之类的包含来做到这一点。是不能限制包含对象的数量,还是我在这里遗漏了一些基本的东西?
【问题讨论】:
-
奇怪,我什至无法在 Rails(3.1) 控制台中使用这种方法。添加
has_many :recent_posts, :class_name => 'Post', :limit => 3。但是当我Blog.includes(:posts).first时,我仍然得到了所有的帖子,而不仅仅是前 3 个。 -
试试 Blog.includes(:recent_posts).first.recent_posts
-
你说得对,它也对我不起作用。该限制不适用于帖子查询。奇数。
标签: ruby-on-rails ruby-on-rails-3 activerecord eager-loading