带有日期时间字段的Rails模型下一个/上一个导航范围

奥立佛

我有一个模型可以说Post有一个名为published_at(datetime)的列我的模型有两个称为next和的实例方法prev

我正在使用mysql作为数据库适配器。

def next
  self.class.unscope(:order).online
      .where('published_at > ?', published_at)
      .order('published_at ASC').first
end

def prev
  self.class.unscope(:order).online
      .where('published_at < ?', published_at)
      .order('published_at DESC').first
end

使用上面的代码,如果每个帖子都有另一个日期,则导航有效。如果某些帖子在同一日期,则仅显示其中的一条记录。

目标:获取按published_at日期时间列排序的下一个或上一个记录

有任何想法吗?

帕维尔·米哈伊柳克(Pavel Mikhailyuk)

在SQL中“ next”“ previous”都没有意义。您必须通过uniq显式定义排序顺序例如,如果将非uniq列作为排序基础,则必须添加uniq一id

然后,您必须更改WHERE子句以接受非uniq列具有相同值的行:

def next
  condition = <<~SQL
    (published_at = :published_at AND id > :id) OR
    (published_at > :published_at)
  SQL
  self.class.unscope(:order).
    online.
    where(condition, published_at: published_at, id: id).
    order(published_at: :asc, id: :asc).
    take
end

prev 构造类似。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有条件地返回日期范围之外的上一个或下一个匹配结果

根据时间序列中的上一个频率预测下一个日期

Rails:带有 JS 分页的索引页的下一个/上一个元标记

带有上一个和下一个图像的图像滑块

带有下一个上一个jquery的SlideShow

带有上一个和下一个按钮的循环显示

PHP / MySQL-基于日期/时间的下一个/上一个按钮,具有重复的日期/时间

日期范围选择器不显示下一个箭头,但显示上一个箭头

组中的SQL上一个/下一个非相等日期时间

jQuery上一个/下一个导航,带有用于自定义日历的显示/隐藏内容

如何使用上一个和下一个按钮遍历带有嵌套下拉菜单的Bootstrap选项卡式导航菜单?

如何从日期变量中查找下一个和上一个日期

当CustomView具有visibleRange时,使用上一个/下一个在FullCalendar中导航

多个文件的less命令:如何导航到下一个/上一个

创建上一个/下一个html页面导航

下一个div,上一个div导航

CSS滚动捕捉点以及导航(下一个,上一个)按钮

棱镜导航-上一个和下一个视图

jQuery,Bootstrap导航-如何添加上一个/下一个按钮?

在单个页面中导航的上一个和下一个按钮

Java:查找可导航集的上一个和下一个值

上一个/下一个点击

分页下一个上一个

我想显示带有日期字符串以及其上的下一个和上一个按钮的操作栏。

具有特定条件的模型的Django下一个/上一个实例?

如何获得模型的上一个和下一个对象?

React Bootstrap 5 - 带有上一个下一个按钮的选项卡组件

带有上一个下一个图标的Swipebox幻灯片

可调整大小的网格列,带有下一个和上一个图像