我刚将我的应用程序从MySQL转换为Postgres。以前,对.all的请求以id顺序返回所有行。在Postgres上,行无序返回。同样地,
Person.first
用于返回id为1的记录,现在有时会返回另一条记录。
如果我添加这样的订单条款:
Person.order("id").first
查询成功并返回第一行。这是预期的行为吗?
答案 0 :(得分:4)
this post回答了您的问题:
我认为默认情况下不会保证按ID排序,因为我认为数据库是如何返回非有序查询的。您可以通过在模型顶部定义默认范围来对其进行排序,如下所示:
default_scope order('id ASC')
然后调用Model.all将等同于调用Model.order('id ASC')。