多种型号的多个图像 – 回形针,导轨

我有四种型号,我们称之为汽车和房屋。 用户可以拥有多辆汽车和多个房屋。 汽车和房屋属于用户。 我希望用户能够上传他们汽车的多张照片,以及他们房屋的多张照片,从我读到的这意味着创建一个名为“照片”的新模型。 两个不同的模型可以同时拥有多张照片,照片可以属于多个模型吗? 我正在使用Ruby 2.0.0和Rails 4。

Sketch / PseudoRuby

User has_many :cars has_many :houses Car belongs_to :user has_many :photos House belongs_to :user has_many :photos Photo belongs_to :car, :house 

这段关系好吗? 我不确定是否必须为Car and House的照片制作单独的模型。

从Rails的角度来看,是的,你可以做到。 belongs_to关联告诉Rails将foreign_key保留在Photo模型中。 因此,在您的示例中,您的照片表将有2个外键:

  • car_id将指向来自汽车表的相关汽车ID(主键)。
  • house_id将指向来自house表的关联house id(主键)。

现在,从回形针的角度来看,您可以根据需要为特定型号提供尽可能多的照片。 但是,为了使相同的Photo模型与House和Car相关联,您需要使用多态关联。 你的模型将类似于:

 class Photo < ActiveRecord::Base belongs_to :imageable, polymorphic: true has_attached_file :photo, styles: {} end class Car < ActiveRecord::Base has_many :photos, as: :imageable end class House < ActiveRecord::Base has_many :photos, as: :imageable end 

您可以在此处获取有关多态关联的更多信息: http : //guides.rubyonrails.org/association_basics.html