我的应用程序基于Michael Hartl的教程,在主页中呈现用户微博的集合以及用户通过方法{{1}跟踪的微博的集合} feed
:
user.rb
我增加了100个微博的限制。
登录控制台,我检查了限制是否符合:
def feed
following_ids = "SELECT followed_id FROM relationships
WHERE follower_id = :user_id"
Micropost.where("user_id IN (#{following_ids})
OR user_id = :user_id", user_id: id).limit(100)
end
控制器中定义了2.3.1 :003 > user.feed.count
(1.6ms) SELECT COUNT(count_column) FROM (SELECT 1 AS count_column FROM "microposts" WHERE (user_id IN (SELECT followed_id FROM relationships
WHERE follower_id = 1)
OR user_id = 1) LIMIT $1) subquery_for_count [["LIMIT", 100]]
=> 100
变量,如下所示:
@feed_item
然后它被渲染到视图中。
但是,当我用浏览器浏览页面时,限制不受尊重,我得到所有微博(251个而不是100个,9个页面,每个30个微博,而不是4个)。那是为什么?
答案 0 :(得分:2)
#paginate
重新定义了关系的限制和偏移。
对于您想要实现的目标,您可以将选项total_entries
传递给#paginate
@feed_items = current_user.feed.paginate(page: params[:page], total_entries: 100)
答案 1 :(得分:1)
试试这个
@feed_items = current_user.feed.paginate(page: params[:page], per_page: 30, total_entries: 100)