Ruby on rails 活动记录访问-Rails 4

Ruby on rails 活动记录访问-Rails 4,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,如果我有一个模型评分,我做了ratings=Rating.all然后ratings.where(“score=?”,3)。在第一条语句中,Rails将搜索数据库中的所有评级,在第二条命令中会发生什么?Rails将再次访问数据库,还是将使用加载到内存中的分级 我这样问是因为我需要所有的数据库记录,但我需要用分隔,其中或等效的数据库请求最少,这种实现的最佳实践是什么 运行这两个查询都不会触及数据库,它们只会创建一个ActiveRecord::Relation对象,只有当您尝试访问数据时,它才会实际运

如果我有一个模型评分,我做了
ratings=Rating.all
然后
ratings.where(“score=?”,3)
。在第一条语句中,Rails将搜索数据库中的所有评级,在第二条命令中会发生什么?Rails将再次访问数据库,还是将使用加载到内存中的分级


我这样问是因为我需要所有的数据库记录,但我需要用
分隔,其中
或等效的数据库请求最少,这种实现的最佳实践是什么

运行这两个查询都不会触及数据库,它们只会创建一个
ActiveRecord::Relation
对象,只有当您尝试访问数据时,它才会实际运行查询,否则该对象将保持为一个关系对象,准备与其他方法链接


如果您尝试在两种状态下循环数据,则将运行两个查询,但如果在同一对象上循环两次,则将获取一次数据,第二次将获取缓存数据。

顺便说一句,您可以在控制台中运行命令检查您的想法,并查看日志中的结果。/*。RBI在这种情况下,如果我想检索数据库中的所有记录,只发出一个请求,并且它们与内存中的数据一起工作,我该怎么办。使用
where
或其他方法……评分是否是评分中的直接属性?如果是这样,您可以在数据库之外进行处理,
ratings。选择{| rating | rating.score==3}