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

我知道Job.all返回所有作业的数组。

但是,订单会是什么?

它们是按升序排列的吗?

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

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

相当确定默认顺序是DB决定返回它们。

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

ActiveRecord查找全部不按ID排序?

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

没有订单。 您应该在了解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 

未定义Rails中的默认顺序。 实际上它取决于数据库。

它按创建的顺序对结果进行排序(而不是在rails中的created_at上)。