【问题标题】:Multiple Images for Multiple Models - Paperclip, Rails多个模型的多个图像 - 回形针,Rails
【发布时间】:2013-10-09 18:12:04
【问题描述】:

我有四个模型,我们称它们为 Cars 和 Houses。用户可以拥有多辆汽车和多栋房屋。汽车和房屋属于用户。我希望用户能够上传多张他们的汽车照片和多张他们房子的照片,据我所知,这意味着创建一个名为“照片”的新模型。两种不同的模型是否有可能同时拥有_many 照片和照片属于_to 多个模型?我正在使用 Ruby 2.0.0 和 Rails 4。

草图/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 和 House 的照片制作单独的模型。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 paperclip


    【解决方案1】:

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

    • car_id 将指向汽车表中关联的汽车 ID(主键)。
    • house_id 将指向房屋表中关联的房屋 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

    【讨论】:

    • 我知道这是旧的......但是同一个照片模型如何与单个foreign_key相关联并将类型指向Car和House?它只会指向一个或另一个......我错过了什么吗?可能只是你的回答措辞奇怪,或者我误解了你。
    猜你喜欢
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    相关资源
    最近更新 更多