Mysql “has\u one”的即时加载ActiveRecord多态关联
我的问题与详细解释的答案几乎相同,只是我需要从多态表中加载一条记录 我的模型如下:Mysql “has\u one”的即时加载ActiveRecord多态关联,mysql,ruby-on-rails,activerecord,ruby-on-rails-5,Mysql,Ruby On Rails,Activerecord,Ruby On Rails 5,我的问题与详细解释的答案几乎相同,只是我需要从多态表中加载一条记录 我的模型如下: class VisionSource has_one :entity_map, as: :entity_mappable end class EntityMap belongs_to :entity_mappable, polymorphic: true end 那么,我怎样才能一字不差地写出像EntityMap.includes:entity\u mappable这样的东西呢?应该是现成的。我怀
class VisionSource
has_one :entity_map, as: :entity_mappable
end
class EntityMap
belongs_to :entity_mappable, polymorphic: true
end
那么,我怎样才能一字不差地写出像EntityMap.includes:entity\u mappable这样的东西呢?应该是现成的。我怀疑它看起来没有开火,因为你没有向整个世界索取什么 试试这个: EntityMap.includes:entity\u mappable.map&:entity\u mappable.map&:class.map&:name.uniq 我用几个使用EntityMapable的类尝试了这个方法,上面在rails控制台中给出了这个SQL输出: EntityMap加载0.9ms选择Entity_maps.*从Entity_maps按Entity_maps.positionASC排序 CameraShot Load 0.4ms选择Vision\u sources.*从Vision\u sources所在的Vision\u sources中键入“CameraShot”和Vision\u sources.idIN 89、87、88、90、85、86按Vision\u sources.positionASC排序 声音加载0.3毫秒选择声音。*从声音中选择声音。id`=1 请注意,CameraShot模型是VisionSource的一个子类,它使用STI和类型字段来定义自己,而声音模型实际上如下所示:
class Sound
has_one :entity_map, as: :entity_mappable
end
也许你能找到答案