从集合中获取记录
Getting a record from a collection
我想从 users
集合中获取 user_5
(即 ID 为 5 的用户)。
users = User.all
user_5 = ???
我知道我可以通过 user = User.find(5)
获取它,但我不想再进行查询。
有什么想法吗?
您可以使用 #find:
users = User.all
user_5 = users.find { |user| user.id == 5 }
通话中
users = User.all
不执行查询。当您尝试在 find
方法中遍历集合时执行查询调用
可能更快
users.find(5)
而不是在内存中使用 find
因为它将从数据库中获取所有记录并线性迭代它们:
users.find { |user| user.id == 5 }
此外 users.find
实际上可能调用 AR find
而不是 Enumerable#find
,所以关于示例可能 return 什么都没有,使用 #detect
更安全
我想从 users
集合中获取 user_5
(即 ID 为 5 的用户)。
users = User.all
user_5 = ???
我知道我可以通过 user = User.find(5)
获取它,但我不想再进行查询。
有什么想法吗?
您可以使用 #find:
users = User.all
user_5 = users.find { |user| user.id == 5 }
通话中
users = User.all
不执行查询。当您尝试在 find
方法中遍历集合时执行查询调用
users.find(5)
而不是在内存中使用 find
因为它将从数据库中获取所有记录并线性迭代它们:
users.find { |user| user.id == 5 }
此外 users.find
实际上可能调用 AR find
而不是 Enumerable#find
,所以关于示例可能 return 什么都没有,使用 #detect
更安全