偏移和限制考虑到与祖先宝石的顶层

时间:2012-12-14 19:49:35

标签: ruby-on-rails ancestry

我正在编写一个简单的留言板系统。关于祖先的一点是它使用单个调用,因此如果我使用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)而不是元素的总数。

关于如何做到这一点的任何想法?

事先提前

1 个答案:

答案 0 :(得分:1)

您无法使用单个数据库查询来执行此操作。

原因是,如果说10的分页,你想要显示10个顶级帖子(实际上说15个帖子),但在下一页的10个顶级帖子中你可能会显示20个实际帖子..所以分页大小不同。

另一种处理方法是使用两个查询:一个用于实际页面:ancestry is null并应用限制和偏移量。 然后另一个查询来获取所有帖子,这些帖子是您在之前的查询中拥有的帖子的任何级别子项。