7

私は多形関連について少し混乱します。ヘッダーイメージと多くのイメージを持つArticleモデルが必要ですが、1つのImageモデルが必要です。問題をさらに混乱させるために、Imageモデルはポリモフィックです(他のリソースに多くのイメージを持たせるため)。私の記事のモデルで同じモデル上の複数の関連付けによる多態的な関連

私はこの関連付けを使用してい

class Article < ActiveRecord::Base 
    has_one :header_image, :as => :imageable 
    has_many :images, :as => :imageable 
end 

これは可能ですか?ありがとう。

+6

has_oneのはhas_manyのためsynctactic糖である:同じモデル上の複数の団体とレール多協会]限界=> 1 –

+0

可能重複(http://stackoverflow.com/questions/2494452/rails-polymorphic-association-with -multiple-association-on-the-same-model) –

答えて

4

はい。それは完全に可能です。

header_imageのクラス名は推測できないため、指定する必要があります。記事は、もう一方の端に、その後

class Article < ActiveRecord::Base 
    has_one :header_image, :as => :imageable, :class_name => 'Image', :dependent => :destroy 
    has_many :images, :as => :imageable, :dependent => :destroy 
end 

を削除された場合、画像が破壊されることを保証するために、あまりにも:dependent => :destroyを含める...

class Image < ActiveRecord::Base 
    belongs_to :imageable, :polymorphic => true 
end 
+0

それは素晴らしいです、ありがとう! –

+0

私はパーティーに5年遅れますが、将来参照するために[この質問と回答]を参照してください(http://stackoverflow.com/questions/2494452/rails-polymorphic-association-with-multiple-associations-on-the同じモデル)。 – Sooie

+0

Peaseはこれを受け入れられた回答としてキャンセルします。この解決法は機能しません。上記の@Sooieのコメントを参照してください。実際のソリューションは次のとおりです。http://stackoverflow.com/questions/2494452/rails-polymorphic-association-with-multiple-associations-on-the-same-model – tommyalvarez

6

は、私はこれを試してみましたが、その後header_imageは、イメージの1つを返します。 。画像テーブルが異なる画像使用タイプ(header_imageとnormal image)を指定していないためです。それは単に言う:imageable_type =両方の用途の画像。したがって、使用タイプに関する情報が格納されていない場合、ActiveRecordは区別できません。

+0

単一のテーブル継承が必要です – BlackTea

関連する問題