【问题标题】:offset and limit taking into consideration the top level with ancestry gem考虑到祖先宝石的顶级水平的偏移和限制
【发布时间】:2012-12-15 18:10:41
【问题描述】:

我正在编写一个简单的留言板系统。关于祖先的一件事是它使用单个调用,因此如果我使用限制和偏移量调用,它不会返回一致的顶级元素列表。我需要 @per_page 和 the_offset 来处理分页。

所以我目前有这样的事情:

@posts=MbPost.where('forum_id=?',params[:id]).offset(the_offset).limit(@per_page).order('updated_at desc')

但需要偏移量和@per_page 反映顶级(即祖先为NULL)而不是元素总数。

你知道怎么做吗?

提前谢谢

【问题讨论】:

    标签: ruby-on-rails ancestry


    【解决方案1】:

    您将无法使用单个数据库查询来做到这一点。

    原因是,假设分页数为 10,您想显示 10 个顶级帖子(实际上是 15 个帖子),但在下一页中,如果再显示 10 个顶级帖子,您可能会显示 20 个实际帖子。所以分页大小不同。

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

    【讨论】:

    • 谢谢回答。是的,我是从第二个想法开始的——然后把它分配进去。似乎有点浪费;将不得不考虑它。我们在另一部分使用acts_as_tree,并且正在考虑使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多