沿着this question的路線,我使用deep_cloneable複製一個模型與其單個關聯。該關聯具有附加的圖像(存儲在s3中),我想在克隆時複製該圖像。深度克隆模型時,如何複製關聯的s3資產?
這就是我正在做的深克隆了 - 這個克隆及其關聯photos
沿着gallery
,並更新複製gallery
根據一些傳遞的參數有一個新的location_id
:
new_gallery = @gallery.deep_clone(incude: :photos) do |original, copied_gallery|
copied_gallery.location_id = gallery_params['Location_id']
end
new_gallery.save
我的第一個想法是以某種方式迭代original
或copied_gallery
的照片,在總體deep_clone
區塊內分配photo.image = old_photo.image
,但我不知道是否所有必要的數據在該點都可以訪問/找到。
從那裏,我想知道是否有訪問deep_clone
塊的(include: :photos)
部分。類似於我如何訪問original
和copied_gallery
,如果我可以訪問塊中原始的&複製的照片,那麼我可以輕鬆地分配值。我只是不知道這個訪問級別是否存在。
如果一切都失敗了,我最好放棄deep_clone
塊的(include: :photos)
部分。我可以自己克隆畫廊,然後克隆個別照片 - 就像這樣:
new_gallery = @gallery.deep_clone do |original, copied_gallery|
copied_gallery.location_id = gallery_params['Location_id']
end
new_gallery.save
@gallery.photos.each do |photo|
new_photo = photo.deep_clone do |original, copied_photo|
copied_photo.image = original.image
end
new_photo.save
end
雖然這感覺很霸道。
你有沒有洞察deep_clone
塊的(include: :photos)
部分,或者你對如何設置image
每個photos
的任何其他的想法被克隆?