Ruby on rails 如何获取以前的相关记录?
我有一个Feed模型,看起来像这样: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 (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
不是我愿意做的事情。