Rails を使用するのはこれが初めてで、1 つの SQL クエリで has one ポリモーフィック アソシエーションをロードできるかどうか疑問に思っていました。モデルとそれらの間の関連付けは十分に基本的なものです。アセット モデル/テーブルは、ポリモーフィックな関連付けを通じてコンテンツ (画像、テキスト、またはオーディオのいずれか) を参照できます。
class Asset < ActiveRecord::Base :belongs_to :content, :polymorphic => true 終わり
Image、Text、Audio は次のように定義されます。
class Image < ActiveRecord::Base :has_one :asset, :as => :content 終わり
画像を読み込もうとすると、次のように言います。
Image.first( :条件 => {:id => id}, :include => :asset )
2 つのクエリを指定します。1 つはイメージを取得するためのもので、もう 1 つはアセットを取得するためのものです (参考までに、これは を指定した場合にも発生します:joins
)。私の理解では、ActiveRecord がこれを行うのは、Image と Asset の間に 1 対 1 の関連付けがあることを認識していないためです。強制的に結合して 2 つのオブジェクトを一度に取得する方法はありますか? また、カスタム選択で結合を使用してみましたが、ActiveRecord モデルとその関連付けを手動で作成する必要があります。
ActiveRecord はこれを行う方法を提供していますか?