Ruby on rails 是否保证ActiveRecord返回按ID排序的对象?

Ruby on rails 是否保证ActiveRecord返回按ID排序的对象?,ruby-on-rails,postgresql,activerecord,ruby-on-rails-4,heroku,Ruby On Rails,Postgresql,Activerecord,Ruby On Rails 4,Heroku,我的项目由Heroku主持。 当Room.all方法返回第一个ID为2的对象和第二个ID为1的对象时,我感到惊讶。我认为可以某种程度上保证返回的对象已按ID排序。我是否应该始终调用Room.all.order:ID而不是常规的all方法 没有。所有的结果都是SQL SELECT*FROM rooms;-没有秩序。在这种情况下,记录的顺序由数据库决定。例如,在PostgreSQL中,我注意到它最后返回最近更新的记录 如果要确保调用.all时有订单,请添加一个默认作用域,该作用域将添加订单: def

我的项目由Heroku主持。 当Room.all方法返回第一个ID为2的对象和第二个ID为1的对象时,我感到惊讶。我认为可以某种程度上保证返回的对象已按ID排序。我是否应该始终调用Room.all.order:ID而不是常规的all方法

没有。所有的结果都是SQL SELECT*FROM rooms;-没有秩序。在这种情况下,记录的顺序由数据库决定。例如,在PostgreSQL中,我注意到它最后返回最近更新的记录

如果要确保调用.all时有订单,请添加一个默认作用域,该作用域将添加订单:

default_scope order('rooms.id ASC')

不,我不能确定订单。我一直在使用Oracle,PostgreSQL,它不提供有序记录。MySQL似乎按顺序返回记录。注意默认的\u范围。应用了排序的默认范围后,除非使用“重新排序”,否则不能直接应用其他排序。此外,它在不同的数据库中生成查询的方式也不同。
default_scope order('rooms.id ASC')