Dies ist mein erstes Mal mit Rails und ich fragte mich, ob es möglich ist, hat eine polymorphe Assoziation in einer SQL-Abfrage? Die Modelle und Verbindungen zwischen ihnen sind einfach genug: Eine Asset-Modell/Tabelle auf einen Gehalt beziehen kann (entweder ein Bild, Text oder Audio) über eine polymorphe Vereinigung, dhEager laden von polymorphen Assoziationen in ActiveRecord
class Asset < ActiveRecord::Base :belongs_to :content, :polymorphic => true end
und das Bild, Text, Audio sind wie folgt definiert:
class Image < ActiveRecord::Base :has_one :asset, :as => :content end
Wenn ich versuche, ein Bild zu laden, sagen wie folgt aus:
Image.first( :conditions => {:id => id}, :include => :asset )
Es gibt zwei Abfragen, ein um das Bild abzurufen und eine andere die A abrufen sset (FYI, dies passiert auch, wenn ich eine :joins
angeben). Soweit mir bekannt ist, macht ActiveRecord dies, weil es nicht weiß, dass es eine Eins-zu-Eins-Verbindung zwischen Image und Asset gibt. Gibt es eine Möglichkeit, eine Verbindung zu erzwingen und die 2 Objekte auf einmal zu holen? Ich habe auch versucht, Join mit einer benutzerdefinierten Auswahl zu verwenden, aber am Ende muss ich die ActiveRecord-Modelle manuell und ihre Verknüpfungen erstellen.
Bietet ActiveRecord eine Möglichkeit, dies zu tun?
Normalerweise verwende ich ORMs nicht mehr. Das ist eine Abstraktion, ohne die ich es gut gemacht habe. – Mario