如何在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
相关产品推荐
相关产品推荐

