我正在编写一个简单的留言板系统。关于祖先的一点是它使用单个调用,因此如果我使用limit和offset调用,它将不会返回顶级元素的一致列表。我需要@per_page和the_offset来处理分页。
所以我现在有这样的事情:
@posts=MbPost.where('forum_id=?',params[:id]).offset(the_offset).limit(@per_page).order('updated_at desc')
但是需要偏移量和@per_page来反映顶层(即祖先是NULL)而不是元素的总数。
关于如何做到这一点的任何想法?
事先提前答案 0 :(得分:1)
您无法使用单个数据库查询来执行此操作。
原因是,如果说10的分页,你想要显示10个顶级帖子(实际上说15个帖子),但在下一页的10个顶级帖子中你可能会显示20个实际帖子..所以分页大小不同。
另一种处理方法是使用两个查询:一个用于实际页面:ancestry is null
并应用限制和偏移量。
然后另一个查询来获取所有帖子,这些帖子是您在之前的查询中拥有的帖子的任何级别子项。