Questa è la mia prima volta con Rails e mi chiedevo se è possibile caricare un ha un'associazione polimorfica in una query SQL? I modelli e le associazioni tra di loro sono essenziali abbastanza: Un modello di asset/tavolo può fare riferimento a un contenuto (un immagine, testo o audio) attraverso un'associazione polimorfica, cioèeager loading delle associazioni polimorfiche in ActiveRecord
class Asset < ActiveRecord::Base :belongs_to :content, :polymorphic => true end
e l'immagine, testo, audio sono definiti in questo modo:
class Image < ActiveRecord::Base :has_one :asset, :as => :content end
Quando provo a caricare un'immagine, diciamo così:
Image.first( :conditions => {:id => id}, :include => :asset )
Si specifica due query, uno per recuperare l'immagine e un altro per recuperare la a sset (FYI, questo accade anche se specifichi uno :joins
). Sulla base della mia comprensione, ActiveRecord lo fa perché non sa che esiste un'associazione one-to-one tra Image e Asset. C'è un modo per forzare un join e recuperare i 2 oggetti in un colpo solo? Ho anche provato a utilizzare join con una selezione personalizzata, ma alla fine devo creare manualmente i modelli ActiveRecord e le loro associazioni.
Vuol ActiveRecord fornisce un modo per fare questo?
Normalmente non uso più gli ORM. Questa è un'astrazione che ho fatto senza. – Mario