我有一个如下模型:
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渴望正确地加载所有可能的城市,但是如果一个城市在单个记录中出现两次,则它会在访问当前城市值时重新获取该值。有什么想法可以防止这种情况并渴望预先加载所有值吗?