You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Rails中对数据库条目进行降序排序?含按created_at列降序排序的实现问询

在Rails中按created_at降序排序数据库条目的几种方法

嘿,这是Rails开发里非常基础又常用的需求,我给你整理了几种实用的实现方式:

  • 直接在查询中指定排序
    这是最直观的写法,在控制器或者任何需要查询数据的地方,直接调用order方法并明确排序规则即可:

    # 把YourModel替换成你的实际模型名,比如User、Post
    YourModel.order(created_at: :desc)
    

    举个控制器里的实际例子,比如文章列表页要按创建时间倒序展示:

    def index
      @posts = Post.order(created_at: :desc)
    end
    
  • 定义可复用的Scope
    如果这个排序逻辑会在多个场景用到,推荐在模型里定义一个scope,让代码更简洁易维护:
    在你的模型文件(比如app/models/post.rb)中添加:

    scope :latest_first, -> { order(created_at: :desc) }
    

    之后在任何地方都可以直接调用这个封装好的scope:

    @posts = Post.latest_first
    
  • 设置默认排序(谨慎使用)
    如果你希望这个模型的所有默认查询都按created_at降序排列,可以设置default_scope:

    default_scope -> { order(created_at: :desc) }
    

    注意:这个规则会影响所有针对该模型的查询,如果某一次需要升序或者其他排序逻辑,得用unscoped临时取消默认规则,比如:

    # 临时取消默认排序,改为按创建时间升序查询
    @old_posts = Post.unscoped.order(created_at: :asc)
    

内容的提问来源于stack exchange,提问作者sourav das

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 12:39:11