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
上)。