4

我刚刚将我的应用程序从 MySQL 转换为 Postgres。以前,对 .all 的请求会按 id 顺序返回所有行。在 Postgres 上,行被乱序返回。同样地,

Person.first

以前返回 id 为 1 的记录,现在有时返回另一条记录。

如果我添加这样的 order 子句:

Person.order("id").first

查询成功并返回第一行。这是预期的行为吗?

4

1 回答 1

4

这篇文章回答了你的问题:

我认为默认情况下不能保证按 ID 排序,因为我相信如何返回无序查询取决于数据库。您可以通过在模型顶部定义默认范围来对其进行排序,如下所示:

default_scope order('id ASC')

然后调用 Model.all 将等效于调用 Model.order('id ASC')。

于 2013-02-07T15:50:47.857 回答