ActiveRecord-连续两次引用相同的外键值不会急于加载后续值

时间:2018-07-03 18:51:25

标签: ruby-on-rails activerecord eager-loading

我有一个如下模型:

class Person < ActiveRecord::Base
  belongs_to :birth_city,
             class_name: 'City',
             foreign_key: 'birth_city_id'

  belongs_to :current_city,
             class_name: 'City',
             foreign_key: 'current_city_id'
end

当我尝试获取系统中的人员列表并对结果进行json化时,我随机获得1个查询以获取人员列表并渴望加载城市,然后一次获取27个额外的查询以获取一个城市。经过更多调查,我发现我的27个人出生在他们目前居住的同一城市。

Person.includes(:birth_city, :current_city).where('person.active' => true)

似乎ActiveRecord渴望正确地加载所有可能的城市,但是如果一个城市在单个记录中出现两次,则它会在访问当前城市值时重新获取该值。有什么想法可以防止这种情况并渴望预先加载所有值吗?

0 个答案:

没有答案