首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅检索Rails表中的第六个和第七个匹配结果

仅检索Rails表中的第六个和第七个匹配结果
EN

Stack Overflow用户
提问于 2016-08-24 13:12:27
回答 2查看 93关注 0票数 0

我正在开发一个Rails应用程序,我遇到了一个障碍:我需要在一个表中返回几个项,比如说,第6-8个匹配项。具有讽刺意味的是,Rails在这里通过.fifth..first显示了一个helper method

我的问题是:当你要搜索的n只有6,7,8,以此类推的时候,你怎么能找到这些结果,而不调用所有的1到8个项目?

这就是我这么做的原因。我正在为一个博客做主页。在顶部,我想要显示最近的5个帖子(将与图像一起显示)。在它们下面,我想以文本的形式显示另外三个指向帖子的链接。

目前,我正在做的第一部分很好。在我的blog.controller.rb中:

代码语言:javascript
复制
    @posts = Post.order('created_at DESC').first(5)

然后,我在视图中遍历帖子,结果显示了我的前五个最新结果。现在我想展示第6-8,我将尝试用一种新的方法来存储它们。我将控制器更改为:

代码语言:javascript
复制
    @posts = Post.order('created_at DESC').first(5)
    @texts = Post.order('created_at DESC').limit(8) 

这将返回8个最新的帖子,而不仅仅是第8个帖子。

是否可以将@texts限制为仅显示匹配的第6、7和8个结果?

EN

回答 2

Stack Overflow用户

发布于 2016-08-24 13:13:29

是。您将希望使用offset来获取它们。下面是关于offset的文档:http://apidock.com/rails/ActiveRecord/QueryMethods/offset

Post.order(created_at: :desc).limit(3).offset(5)

票数 1
EN

Stack Overflow用户

发布于 2016-08-24 15:47:20

节省一些数据库时间,并在单个查询中完成,如下所示

代码语言:javascript
复制
@texts = Post.order('created_at DESC').limit(8).to_a
@posts = @texts.shift(5) # takes the first 5 records from @texts leaving the remaining 3 
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39114881

复制
相关文章

相似问题

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