首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActiveRecord::Querying#first返回集合的第三个成员

ActiveRecord::Querying#first返回集合的第三个成员
EN

Stack Overflow用户
提问于 2012-01-30 15:56:28
回答 2查看 143关注 0票数 1
代码语言:javascript
复制
[1] pry(main)> User.first
  User Load (0.4ms)  SELECT "users".* FROM "users" LIMIT 1
=> #<User id: 3, email: "chasity@kiehn.net", encrypted_password: "$2a$10$lqsgKvQuz9iSIu/..FMRJu76H9KNhfVz5x9DmxphC0TK...", reset_password_token: ... >
[2] pry(main)> User.find(1)
  User Load (12.8ms)  SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1  [["id", 1]]
=> #<User id: 1, email: "admin@example.com", encrypted_password: "$2a$10$pGDcv0/EgiDk4KcZN9pli.evx5Ni1qOoujQD15HgWH8Y...", reset_password_token: ... >
[3] pry(main)> Product.first
  Product Load (0.6ms)  SELECT "products".* FROM "products" LIMIT 1
=> #<Product id: 1, name: "Ruby on Rails Jr. Spaghetti", created_at: "2012-01-25 10:13:26", updated_at: "2012-01-25 10:13:26", properties: ...>

这是在控制台和运行时发生的,并且仅适用于User模型。是什么导致了这样的行为?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-30 16:05:16

您还没有指定顺序-数据库可以按照它想要的任何方式对结果进行排序。它可以是主键顺序,也可以是事物在磁盘上的布局方式,但没有order子句就没有保证。

如果您希望第一条记录按特定顺序排列,请确保您请求它

票数 5
EN

Stack Overflow用户

发布于 2012-01-30 16:16:20

User.firstUser.all.first相同,没有指定的顺序,所以DB以任意顺序返回元素列表。如果想要获得id最小的用户,可以使用User.order("id").first

如果您的请求返回了几个元素,并且您希望选择其中任何一个元素,那么您可能希望使用不指定顺序的first

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9060875

复制
相关文章

相似问题

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