Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql “has\u one”的即时加载ActiveRecord多态关联_Mysql_Ruby On Rails_Activerecord_Ruby On Rails 5 - Fatal编程技术网

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

也许你能找到答案