[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模型。是什么导致了这样的行为?
发布于 2012-01-30 16:05:16
您还没有指定顺序-数据库可以按照它想要的任何方式对结果进行排序。它可以是主键顺序,也可以是事物在磁盘上的布局方式,但没有order子句就没有保证。
如果您希望第一条记录按特定顺序排列,请确保您请求它
发布于 2012-01-30 16:16:20
User.first与User.all.first相同,没有指定的顺序,所以DB以任意顺序返回元素列表。如果想要获得id最小的用户,可以使用User.order("id").first。
如果您的请求返回了几个元素,并且您希望选择其中任何一个元素,那么您可能希望使用不指定顺序的first。
https://stackoverflow.com/questions/9060875
复制相似问题