考虑到祖先宝石的顶级水平,抵消和限制



我正在编写一个简单的留言板系统。关于 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)而不是元素总数。

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

提前感谢

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

原因是,例如分页为 10,您想显示 10 个顶级帖子

(实际上说 15 个帖子),但在下一页中,对于另外 10 个顶级帖子,您可能会显示 20 个实际帖子。所以分页大小是不同的。

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

最新更新