[英]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.