加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何最近在rails中订购数据库记录?

发布时间:2020-12-17 04:01:31 所属栏目:百科 来源:网络整理
导读:我想订购模型Item中的所有项目,以便它首先显示最新的项目.根据 Rails guide,以下代码应该工作: Item.order("created_at DESC") 但是,当我在终端中键入那些(或多种)时,最新的项目总是最后显示,这就是它们在我的页面上显示的方式.我最近如何有效地检索它们?
我想订购模型Item中的所有项目,以便它首先显示最新的项目.根据 Rails guide,以下代码应该工作:

Item.order("created_at DESC")

但是,当我在终端中键入那些(或多种)时,最新的项目总是最后显示,这就是它们在我的页面上显示的方式.我最近如何有效地检索它们? (我将在每页上一次只显示其中一些.)

请注意,我的项目默认范围是最早的.

更新:
这是我获得的SQL:

SELECT “comments”.* FROM “comments” ORDER BY comments.created_at ASC,created_at DESC

所以我想我不应该使用默认范围……

解决方法

您发布的查询是正确的

Item.order("created_at DESC")

它不起作用的唯一原因是它还有其他任何相互矛盾的原因.通常,冲突由default_scope表示.

如果您的默认范围覆盖了您的订单,则应首先取消查询

Item.unscoped { Item.order("created_at DESC") }

如果您使用默认范围,我强烈建议您避免使用它们.它们很难调试和解决.

极少数情况下默认范围是有意义的.您只需在控制器中的选定时间传递(默认)范围,或为其创建自定义方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读