gpt4 book ai didi

ruby-on-rails - rails :order by date in Postgres returning incorrect order

转载 作者:行者123 更新时间:2023-12-04 01:47:20 29 4
gpt4 key购买 nike

我有一个模型叫 Story我想通过 created_at 订购日期。由于我在使用 Postgresql 的 Heroku 上托管了我的应用程序,因此我的 Controller 中有以下内容:

@stories = Story.find( :all, :order => "DATE(created_at) DESC" , :limit => 11)

我希望这能给出我的前 11 个故事,按创作日期排序,最新的故事在前。

不幸的是,这行不通。大多数故事返回顺序正确,但前两个被翻转。也就是说,最新的故事出现在列表中的第二位。

为什么会这样?我有一个偷偷摸摸的怀疑,我的结果根本没有被排序,或者被排序在错误的列(也许是 id?)上,直到现在它恰好按照我预期的那样排序,当显示在我的索引页面上时。我怎样才能按照我的预期订购?

如果有人关心,索引 View 只是按顺序显示故事。即(HAML):
- @stories.each do |story|
= render :partial => "event", :locals => { :event => story }

编辑

我怀疑 created_at是日期时间列和 DATE(...)函数忽略时间部分。因此它以随机顺序返回在同一日期创建的元素。由于前两个故事是在同一天创建的,但相隔几个小时,这就解释了为什么它们似乎是“颠倒的”。如果是这种情况,按日期和时间排序的正确语法是什么?

最佳答案

我相信你想要:

@stories = Story.find(:all, :order => "created_at DESC" , :limit => 11)

Rails 3+ 的更新:
@stories = Story.order(created_at: :desc).limit(11)

关于ruby-on-rails - rails :order by date in Postgres returning incorrect order,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12764765/

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