繁体   English   中英

渴望加载'has_one'的ActiveRecord多态关联

[英]eager load ActiveRecord polymorphic associations that are 'has_one'

我的问题与这里通篇解释的答案几乎相同,除了我需要急于从多态表中加载has_one记录。

我的模型如下:

class VisionSource 
  has_one :entity_map, as: :entity_mappable
end

class EntityMap 
  belongs_to :entity_mappable, polymorphic: true
end

然后,我该如何逐字写出这样的EntityMap.includes(:entity_mappable)

开箱即用。 我怀疑它似乎没有触发,因为您不是在向EntityMappable请求

尝试这个:

EntityMap.includes(:entity_mappable).map(&:entity_mappable).map(&:class).map(&:name).uniq

我用几个使用EntityMappable的类进行了尝试,上面的代码在rails控制台中提供了此SQL输出:

EntityMap Load (0.9ms) SELECT Entity_maps .* FROM Entity_maps或ORDER BY Entity_maps . position ASC CameraShot Load (0.4ms) SELECT vision_sources .* FROM vision_sources WHERE vision_sources . 输入IN ('CameraShot') AND vision_sources . id IN (89, 87, 88, 90, 85, 86) ORDER BY 89,87,88,90,85,86 IN (89, 87, 88, 90, 85, 86) ORDER BY vision_sources . 位置ASC Sound Load (0.3ms) SELECT声音.* FROM声音WHERE声音. id` = 1

请注意,CameraShot模型是VisionSource的子类,它使用STI(因此使用type字段来定义自身),而Sound模型实际上看起来像这样:

class Sound
  has_one :entity_map, as: :entity_mappable
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM