我正在编写一个简单的留言板系统。关于 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
并应用限制和偏移量。然后,另一个查询获取所有帖子,这些帖子是您在上一个查询中拥有的帖子的任何级别的子级。