Esta es la primera vez que uso Rails y me preguntaba si es posible cargar una asociación polimórfica tiene una en una consulta SQL. Los modelos y las asociaciones entre ellos son lo suficientemente básicas: Un modelo de activo/table puede referirse a un contenido (ya sea una imagen, texto o audio) a través de una asociación polimórfica, es decir,Carga ansiosa de asociaciones polimórficas en ActiveRecord
class Asset < ActiveRecord::Base :belongs_to :content, :polymorphic => true end
y la Imagen, texto, audio se definen así:
class Image < ActiveRecord::Base :has_one :asset, :as => :content end
Cuando intento cargar una imagen, digamos así:
Image.first( :conditions => {:id => id}, :include => :asset )
se especifica dos consultas, una para recuperar la imagen y otro para recuperar la a Sys (FYI, esto sucede también si especifico un :joins
). Según lo que entiendo, ActiveRecord hace esto porque no sabe que existe una asociación uno a uno entre Image y Asset. ¿Hay alguna manera de forzar una unión y recuperar los 2 objetos de una vez? También intenté usar join con una selección personalizada, pero al final tengo que crear manualmente los modelos de ActiveRecord y sus asociaciones.
¿ActiveRecord proporciona una manera de hacer esto?
Normalmente, ya no uso ORMs. Esta es una abstracción que he hecho bien sin ella. – Mario