在Rails中有不同模型关联的Has_many

时间:2018-03-12 05:49:20

标签: ruby-on-rails activerecord associations rails-migrations

我有几个不同的模型,我想添加多个图像。

我有一个图像模型,其中belongs_to个关联设置为不同的拥有模型(每个拥有的模型都定义了has_many :images

我想知道我应该创建哪些适当的迁移,以便为每个拥有的模型添加image_ids列。

我假设这样的事情......

rails g migration AddImagesToBusinesses images businesses image_ids:integer

然而,我很困惑,因为我相信你只能以这种方式建立一个关联,并且需要通过在images表中添加一列来识别它所属的模型的id来完成(这里)有一些不同的模型)。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我认为你需要多态关联。 请在此处查看documentaions

答案 1 :(得分:0)

当您关注图像与其他模型的关系时。你应该尝试像这样的多态关联。

生成图片模型:

class CreateImages < ActiveRecord::Migration
  def change
    create_table :images do |t|
      t.string :file_id
      t.boolean :featured
      t.references :imageable, polymorphic: true, index: true
      t.timestamps null: false
    end
  end
end

更新图片模型:

class Image < ActiveRecord::Base
  attachment :file
  belongs_to :imageable, polymorphic: true
end

添加与此类其他模型的关联

class Model < ActiveRecord::Base
  has_many :images, as: :imageable, dependent: :destroy
  accepts_attachments_for :images, attachment: :file
end

有关详细信息,请Ruby on Rails Guide