我想从user_5
集合中获取users
(ID为5的用户)。
users = User.all
user_5 = ???
我知道我可以使用user = User.find(5)
来获取它,但是我不想再次查询。
有什么想法吗?
答案 0 :(得分:2)
您可以使用#find:
users = User.all
user_5 = users.find { |user| user.id == 5 }
答案 1 :(得分:1)
通话
users = User.all
不执行查询。当您尝试迭代find
方法中的集合时,将执行查询。调用它可能会更快
users.find(5)
比在内存find
中使用,因为它将从数据库中获取所有记录并对其进行遍历:
users.find { |user| user.id == 5 }
users.find
实际上也可以称为AR find
而不是Enumerable#find
,因此about示例可能不会返回任何内容,使用#detect