首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Sequel::Model在两个表之间分页?

问如何使用Sequel::Model在两个表之间分页?
EN

Stack Overflow用户
提问于 2011-10-31 00:46:23
回答 1查看 534关注 0票数 3

作为改变,我使用的是Ramaze,因此Sequel,基于应用而不是Rails应用。

我有一个模型Tag,它通过连接表:taggings与:posts进行多对多的关联,通过连接表:external_post_taggings与:external_posts进行多对多的关联。

我希望将这两个关联收集在一起,并按日期字段进行排序,该字段在每个表中称为created_at。

如果没有分页,我会这样做:

代码语言:javascript
复制
@combined = (@tag.posts + @tag.external_posts).sort_by(&:created_at).reverse

但是,我需要使用分页。如果仅仅是.posts,我会这样做:

代码语言:javascript
复制
@posts = @tag.posts.paginate(page, 10)

但我不知道如何在两个表之间分页,如果这是可能的话。

EN

回答 1

Stack Overflow用户

发布于 2011-11-01 04:28:40

假设您希望对标签和帖子的组合进行分页,则可能需要对两个关联数据集的并集进行分页:

代码语言:javascript
复制
@tag.posts_dataset.
  union(@tag.external_posts_dataset).
  order(:created_at.desc).
  paginate(page, 10)

但是,除非posts和external_posts使用相同的模型类,否则这会有问题。如果它们使用不同的模型类,您可能需要手动跟踪每个模型类的偏移量。基本上,对于每个页面,为两个关联选择下10条记录(每个记录从适当的偏移量开始)。将两组10个数组组合成一个数组,按反转的created_at字段排序,取前10个结果。计算10个组合/排序记录数组中的帖子和外部帖子的数量,并相应地更新帖子和外部帖子的偏移量,以便在下一页使用。

例如,在第1页上,您将为两者都使用偏移量0。如果在合并、排序和获取前10个后,在10的数组中有7个柱子和3个外部柱子,则在第2页上,您将从7处开始柱子偏移,从3处开始外部柱子偏移。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7946281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档