Rails 3:"MyModel.all"的默认顺序是什么?

Mis*_*hko 11 ruby-on-rails ruby-on-rails-3

我知道这会Job.all返回所有工作的数组.

但是,订单会是什么?

他们是按升序排序的id吗?

什么Job.first回报?文档说:"返回找到的第一个资源."

但是,看起来顺序是什么?

Doo*_*oon 12

确定默认顺序是DB决定返回它们.

有关详细信息,请参见此处

ActiveRecord查找全部不按ID排序?

如果你想按特定顺序使用它们,你应该做Model.order()


noo*_*odl 6

没有订单.您应该在了解ActiveRecord时查看日志,以查看正在生成的SQL.如果没有ORDER BY子句,则没有订单.您可能会发现您按照它们插入数据库的顺序返回记录,但这只是巧合,并且由于数据库服务器中的实现.除非存在ORDER BY,否则SQL结果将显式无序.

对于#first,在没有order子句的情况下也是随机的(至少,它在rails 3中).

您可以非常轻松地指定订单:

MyModel.order(:some_attr) # all records sorted by some_attr
MyModel.order(:some_attr).first # First record in sorted order
Run Code Online (Sandbox Code Playgroud)