1

ユーザー、製品、写真モデルの間に関係を築く必要があります。ユーザーは商品に写真を追加できます。したがって、ユーザーのhas_many写真と製品のhas_many写真がありますが、それぞれの写真belongs_toは製品とユーザーの両方です。Railsでこれをどのように達成できますか?私が理解している限り、ポリモーフィックな関連付けでは、写真は製品またはユーザーにのみ属することができます。has_many_through代わりに、ユーザーと写真の関係と製品と写真の関係に別々の関係を使用する必要がありますか?

4

1 に答える 1

2

同じモデル内に複数の belongs_to 属性を持つことができます。基本的に、belongs_to としてマークされたモデルは、has_many でマークされたモデルへの外部キーを保持します。

class MyModel < ActiveRecord::Base

  belongs_to :other_model1
  belongs_to :other_model2

end

以下で述べたようにポリモーフィックアソシエイトを使用したい場合は、これらの線に沿ってそれを行うことができます

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

class Users < ActiveRecord::Base
  has_many :photos, :as => :imageable
end

class Product < ActiveRecord::Base
  has_many :photos, :as => :imageable
end

この場合、 Photos クラスを再訪する必要なく、 has_many :photos, :as => :imageable 属性を追加するだけで関係を作成できます。

于 2012-11-19T16:51:04.917 に答える