具有Postgres数据的Rails不按顺序返回

时间:2013-02-07 15:41:51

标签: mysql ruby-on-rails postgresql rails-activerecord

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

Person.first

用于返回id为1的记录,现在有时会返回另一条记录。

如果我添加这样的订单条款:

Person.order("id").first

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

1 个答案:

答案 0 :(得分:4)

this post回答了您的问题:

  

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

default_scope order('id ASC')
     

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