我在Heroku部署中有一个奇怪的问题,我似乎不能在本地重复.基本上,当我发现所有在一个特定的模型,而不是按ID排序,似乎没有任何命令返回它们.
通常记录如下:
>> Model.all => [<model id: 2>,<model id: 1>,<model id: 3>,<model id: 4>,<model id: 5>]
… 等等.
如果我明确地调用Model.order(“id ASC”),它将按预期的方式返回模型.
是什么赋予了?为什么会发现所有的对象都没有以递减的ID顺序返回?
解决方法
默认情况下,ID的排序不能保证,因为取决于非有序查询是如何被排序的(通常是未指定的).您可以通过在模型顶部定义一个
default scope来使其始终如此:
default_scope { order('id ASC') }