Ruby on rails 活动记录查询异常行为

Ruby on rails 活动记录查询异常行为,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,下面的屏幕截图显示了这种情况: 如您所见,我调用Property.limit(10)从数据库中获取前10个对象,但只有在调用@properties变量时才会执行查询。我不明白为什么不叫它。然后将在视图中调用它并减慢渲染速度。令人惊讶的是,它将在\u filterpartial中调用,但是它根本不包含@properties变量。发生什么事了 同时,城市。所有和国家。所有都在控制器中执行。它是如何发生的?属性。limit(10)不会像您预期的那样从数据库加载10个属性。它只返回一个值 当您对该关

下面的屏幕截图显示了这种情况:

如您所见,我调用
Property.limit(10)
从数据库中获取前10个对象,但只有在调用
@properties
变量时才会执行查询。我不明白为什么不叫它。然后将在视图中调用它并减慢渲染速度。令人惊讶的是,它将在
\u filter
partial中调用,但是它根本不包含
@properties
变量。发生什么事了

同时,
城市。所有
国家。所有
都在控制器中执行。它是如何发生的?

属性。limit(10)
不会像您预期的那样从数据库加载10个属性。它只返回一个值

当您对该关系对象调用实际需要来自该数据库的数据的方法(如调用
count
each
)时,就会发生数据库查询

这是默认的ActiveRecord行为。它不会减慢任何速度,因为如果数据加载到控制器或视图中,它不会影响总体响应时间


阅读更多信息。

这就是为什么可以链接多个活动记录查询,以及活动记录能够将所有查询合并到单个查询中的方式。