[英]Active Record Access - Rails 4
如果我有一个模型Rating,则我进行ratings = Rating.all
,然后进行ratings = Rating.all
ratings.where ("score = ?", 3)
。 在第一条语句中,Rails将搜索数据库中的所有额定值,第二条命令会发生什么? Rails将再次访问数据库,还是将使用加载到内存中的评级?
我问是因为我需要所有数据库记录,但是我需要与可能的最少数据库请求隔离在where
或等同,那么这种实现的最佳实践是什么?
运行这些查询中的任何一个都不会涉及数据库,那些查询只会创建一个ActiveRecord::Relation
对象,只有当您尝试访问数据时,它才会真正运行查询,否则该对象将保留为关系对象,准备被链接与其他方法。
例如,如果您尝试对两种状态的数据进行循环,则将运行2个查询,但是如果对同一个对象循环两次,则数据将被提取一次,并且第二次将获取缓存的数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.