我的问题与完全解释here的答案几乎相同,除了我需要从多态表中加载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)
一样逐字写一些东西?
答案 0 :(得分:1)
应该只为你开箱即用。我怀疑它似乎没有被解雇,因为你并没有要求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 .
的位置ASC
CameraShot Load (0.4ms) SELECT
vision_sources .* FROM
vision_sources WHERE
vision_sources .
类型IN ('CameraShot') AND
{vision_sources {1}} ID为.
{vision_sources {1}} {位置{1}} {声音{1}} {声音{1}} {声音{1}} id` = 1
请注意,CameraShot模型是VisionSource的子类,它使用STI(因此类型字段定义自己),而Sound模型实际上看起来像这样:
IN (89, 87, 88, 90, 85, 86) ORDER BY