Ruby on rails RoR |如何根据日期查找下一个和上一个

Ruby on rails RoR |如何根据日期查找下一个和上一个,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我试图通过slug查找模型的一个实例,我可以通过 @project = Project.where(:slug => params[:id]).first 但是一旦我得到了实例,我想从一个名为publish的列的顺序中找到模型的下一个和上一个实例,该列是一个日期 如何仅获取任意orderby列的上一个和下一个实例的slug ::编辑:: 将此添加到我的工作表中 def previous(offset = 0) self.class.select('slug').first(

我试图通过slug查找模型的一个实例,我可以通过

@project = Project.where(:slug => params[:id]).first
但是一旦我得到了实例,我想从一个名为publish的列的顺序中找到模型的下一个和上一个实例,该列是一个日期

如何仅获取任意orderby列的上一个和下一个实例的slug

::编辑:: 将此添加到我的工作表中

def previous(offset = 0)     
  self.class.select('slug').first(:conditions => ['published < ?', self.id], :limit => 1,        :offset => offset, :order => "published DESC")
end

def next(offset = 0)
  self.class.select('slug').first(:conditions => ['published > ?', self.id], :limit => 1, :offset => offset, :order => "published ASC")
end
def previous(偏移量=0)
self.class.select('slug').first(:conditions=>['published<?',self.id],:limit=>1,:offset=>offset,:order=>“published DESC”)
结束
def next(偏移量=0)
self.class.select('slug').first(:conditions=>['published>?',self.id],:limit=>1,:offset=>offset,:order=>“published ASC”)
结束

我在

找到了这个解决方案,假设您的
发布日期是唯一的,像这样的事情应该会起作用:

@project = Project.where(:slug => params[:id]).first

@prev_project = Project.where( "publish < ?", @project.publish ).
                        order( "publish DESC" ).
                        first

@next_project = Project.where( "publish > ?", @project.publish ).
                        order( "publish" ).
                        first
@project=project.where(:slug=>params[:id])。首先
@prev_project=project.where(“publish<?”,@project.publish)。
命令(“发布描述”)。
第一
@下一个项目=project.where(“publish>?”,@project.publish)。
命令(“发布”)。
第一
对于
@prev_project
而言,
where
子句表示
@project
之前的所有项目,
顺序将最新的项目列在第一位(将最新的项目放在顶部的
@project
之前),并且
将查询限制为一个结果,即前一个项目。对
@next_project
的查询相同,但相反。如果
publish
不是唯一的,那么您还必须根据第二个标准进行排序


然而,你可能想考虑不重新发明轮子,使用非常普通的宝石,这将使它简单如<代码> @ Project。下一个和最后一个还是下一个和前一个?对不起,米沙,我可能把问题弄糊涂了。我希望获得与最初查询的实例相关的下一个和上一个实例。初始实例不知道它与其他实例的关系。订单基于模型中名为published的一列,该列是日期。