Has_many 个不同模型关联 Rails
Has_many of different models association in Rails
我有几个不同的模型,我想在其中添加多张图片。
我有一个图像模型,其中 belongs_to
关联设置为不同的拥有模型(每个拥有模型都定义了 has_many :images
)。
我想知道我应该创建什么适当的迁移,以便为每个拥有的模型添加一个 image_ids
列。
我假设是这样的...
rails g migration AddImagesToBusinesses images businesses image_ids:integer
但是,我很困惑,因为我认为您只能通过这种方式建立一个关联,并且需要通过向图像添加一列来完成它 table 以识别模型的 ID 它属于(这里有几个不同的型号)。
感谢您的帮助。
我认为您需要多态关联。
请参阅此处 documentaions。
由于您担心图像与其他模型的关系。您应该尝试这样的多态关联。
生成图像模型:
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。
我有几个不同的模型,我想在其中添加多张图片。
我有一个图像模型,其中 belongs_to
关联设置为不同的拥有模型(每个拥有模型都定义了 has_many :images
)。
我想知道我应该创建什么适当的迁移,以便为每个拥有的模型添加一个 image_ids
列。
我假设是这样的...
rails g migration AddImagesToBusinesses images businesses image_ids:integer
但是,我很困惑,因为我认为您只能通过这种方式建立一个关联,并且需要通过向图像添加一列来完成它 table 以识别模型的 ID 它属于(这里有几个不同的型号)。
感谢您的帮助。
我认为您需要多态关联。 请参阅此处 documentaions。
由于您担心图像与其他模型的关系。您应该尝试这样的多态关联。
生成图像模型:
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。