Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何获取以前的相关记录?_Ruby On Rails_Ruby_Ruby On Rails 3_Activerecord - Fatal编程技术网

Ruby on rails 如何获取以前的相关记录?

Ruby on rails 如何获取以前的相关记录?,ruby-on-rails,ruby,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby,Ruby On Rails 3,Activerecord,我有一个Feed模型,看起来像这样: Feed (id, project_id, content) 给定一个Feed对象,比如so(3031,13,'yada-yo-ya') 我想找到位于上面列出的提要对象之前的提要项(如果有)。它必须是针对项目id 类似于,给定@feed.project\u id,查找该项目id的所有feed项,并返回@feed=feed.find(3031)之前的记录(如果有) 复杂,对吧?想法 谢谢。您可以在当前提要之前运行该项目所有提要的查询,只需提取最后一条记录:

我有一个Feed模型,看起来像这样:

Feed (id, project_id, content)
给定一个
Feed
对象,比如so
(3031,13,'yada-yo-ya')

我想找到位于上面列出的提要对象之前的提要项(如果有)。它必须是针对
项目id

类似于,给定
@feed.project\u id
,查找该
项目id
的所有
feed
项,并返回
@feed=feed.find(3031)
之前的记录(如果有)

复杂,对吧?想法


谢谢。

您可以在当前提要之前运行该项目所有提要的查询,只需提取最后一条记录:

@feed = Feed.find(3031)
@previous_feed = Feed.where("id < ? and project_id = ?", @feed.id, @feed.project_id).order("id").last
@feed=feed.find(3031)
@上一个_feed=feed.where(“id<?和project_id=?”,@feed.id,@feed.project_id)。订单(“id”)。最后

您可以在当前提要之前运行该项目所有提要的查询,只需提取最后一条记录:

@feed = Feed.find(3031)
@previous_feed = Feed.where("id < ? and project_id = ?", @feed.id, @feed.project_id).order("id").last
@feed=feed.find(3031)
@上一个_feed=feed.where(“id<?和project_id=?”,@feed.id,@feed.project_id)。订单(“id”)。最后

谢谢,但似乎每次都会为每个提要返回相同的记录。似乎没有考虑到当前的项目?我建议您确保您也设置了订单
Feed.order(“id DESC”)。其中(*blah*)。首先
@Matthew-好建议,更新了我的答案。(至少在Rails 3中,您应该能够只按ID排序并最后调用,它基本上会在后台反转排序并首先调用——也就是说,它不会返回整个结果集,只返回一条记录)您是对的@dmarkow,它唯一会中断的时间是在存在默认范围时。(我认为,
倒序
会尊重这一点)。但我还是更喜欢对秩序保持精确。使用
last
不是我愿意做的事。谢谢,但似乎每次都会为每个提要返回相同的记录。似乎没有考虑到当前的项目?我建议您确保您也设置了订单
Feed.order(“id DESC”)。其中(*blah*)。首先
@Matthew-好建议,更新了我的答案。(至少在Rails 3中,您应该能够只按ID排序并最后调用,它基本上会在后台反转排序并首先调用——也就是说,它不会返回整个结果集,只返回一条记录)您是对的@dmarkow,它唯一会中断的时间是在存在默认范围时。(我认为,
倒序
会尊重这一点)。但我还是更喜欢对秩序保持精确。使用
last
不是我愿意做的事情。