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

在这种情况下,您可以简单地通过添加 has_many :photos, :as => :imageable 属性来创建关系,而无需重新访问 Photos 类。

于 2012-11-19T16:51:04.917 回答