首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否保证ActiveRecord返回按ID排序的对象?

是否保证ActiveRecord返回按ID排序的对象?
EN

Stack Overflow用户
提问于 2014-10-11 15:13:03
回答 1查看 53关注 0票数 1

我的项目由Heroku主持。当Room.all方法返回带有first object with ID 2的对象,然后返回一个second object with ID 1时,我感到很惊讶。我认为有某种保证,即对象已经按ID排序返回了。我应该总是调用Room.all.order(:id)而不是常规的all方法吗?

代码语言:javascript
复制
irb(main):002:0> Room.all
=> #<ActiveRecord::Relation [
    #<Room id: 2, color: "rgb(83, 180, 83)", status: "Status #2", created_at: "2014-10-11 14:14:02", updated_at: "2014-10-11 14:18:19">, 
    #<Room id: 1, color: "rgb(0, 96, 255)", status: "Status #3", created_at: "2014-10-11 14:14:02", updated_at: "2014-10-11 14:18:30">
  ]>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-11 15:58:01

不是的。Room.all只是结束于SQL SELECT * FROM rooms; --没有订单。在这种情况下,记录的顺序由数据库决定(例如,在PostgreSQL中,我注意到它返回了最近更新的记录)。

如果要确保在调用.all时存在订单,请添加一个默认范围以添加该范围:

代码语言:javascript
复制
default_scope order('rooms.id ASC')
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26316094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档