gpt4 book ai didi

ruby-on-rails - 返回率 |如何根据日期查找下一个和上一个

转载 作者:数据小太阳 更新时间:2023-10-29 08:20:57 24 4
gpt4 key购买 nike

我正在尝试通过 slug 查找模型的 1 个实例,我可以通过

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

但是一旦我得到实例,我想从一个名为 publish 的列的顺序中找到模型的下一个和上一个实例,这是一个日期。

我如何才能按列获取任意顺序的前一个和下一个实例的 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

我在 Next, Previous Records Using Named Scope 找到了这个解决方案

最佳答案

假设您的publish 日期是独一无二的,这样的事情应该可行:

@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

对于@prev_projectwhere子句表示@project之前的所有Project,order先列出最新的(将那个放在顶部 @project 之前)并且 first 将查询限制为一个结果,即上一个项目。 @next_project 的查询相同但相反。如果 publish 不是唯一的,您还必须根据第二个标准进行排序。

但是,您可能要考虑不要重新发明轮子并使用非常常见的 gem acts_as_list ,这将使它像 @project.higher_item@project.lower_item 一样简单。

关于ruby-on-rails - 返回率 |如何根据日期查找下一个和上一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10713177/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com