1

私は現在、という名前のモデルを持っていImageます。このモデルは に関連付けられていArticleます。

class Article < ActiveRecord::Base
  has_many: images
end

Image テーブルには が含まれているarticle_idため、画像は記事に関連付けられています。

しかし、自分の画像を他のモデルと一緒に使用したいと考えています。したがって、モデルに呼び出される新しい属性を追加するarticle_idようなものに変更することを想像します。owner_idowner_modelImage

そうすれば、他のモデルも多くの画像を持つことができます。

これが ActiveRecord を使用して優雅に達成できるかどうか、またその方法は?

余談ですが、画像には CarrierWave を使用しています。

4

3 に答える 3

3

ポリモーフィックな関連付けを使用できます。

Railsガイドには、あなたの質問にぴったりの例があります。

class Picture < ActiveRecord::Base
  belongs_to :imageable, :polymorphic => true
end

class Employee < ActiveRecord::Base
  has_many :pictures, :as => :imageable
end

class Product < ActiveRecord::Base
  has_many :pictures, :as => :imageable
end
于 2013-03-15T15:22:30.887 に答える
1

ポリモーフィック アソシエーションを調べましたか? Ryan がビデオをアップしています: http://railscasts.com/episodes/154-polymorphic-association

さまざまなクラスを画像に関連付けることができます。

于 2013-03-15T15:22:30.883 に答える
1

あなたが探しているのは、ポリモーフィック アソシエーション ( http://guides.rubyonrails.org/association_basics.html#polymorphic-associations ) と呼ばれるものです。

于 2013-03-15T15:22:43.917 に答える