我需要在用户、产品和照片模型之间建立关系。用户可以将照片添加到产品中。因此,一张用户has_many
照片和一张产品has_many
照片,但每张照片belongs_to
既是产品又是用户。我怎样才能在 Rails 中实现这一点?据我了解,多态关联只允许照片属于产品或用户。我是否必须为用户照片和产品照片关系使用单独has_many_through
的关系?
问问题
59 次
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 回答