有一些我不完全理解的东西。 看看这个对数据库进行n次调用(或查询)的例子,其中n是客户数量。
@reports = Report.where(:car => car)
for customer in customers
report = @reports.where(:city => customer.city, :age=> customer.age)
end
下面这个只调用一次数据库,对吗?
@reports = Report.where(:car => car).where( :city => customers.map(&:city), :age => customers.map(&:age))
for customer in customers
report = @reports.detect(:city => customer.city, :age=> customer.age)
end
答案 0 :(得分:1)
是的,第二个例子只是调用数据库。
执行@reports= Report.where(:car => car).where( :city => customers.map(&:city), :age => customers.map(&:age))
后,您将所有这些记录加载到@reports
变量中。
因此,在检测部分,它不需要调用数据库,因为记录已经存在。