使用Dragonfly上传的重复图像

时间:2016-10-07 12:31:54

标签: ruby-on-rails dragonfly-gem

我想复制has_many :pictures的记录。复制记录是没有意义的,但复制Picture记录是另一回事。

  • Picture记录包含指向Post
  • 的链接
  • Picture有一个属性(对于Dragonfly),image_uid包含2016/08/17/3chjxpz97o_tfss_05bbc7ac_a432_4408_bf6e_a0fa3dc4630d_animage.jpeg
  • 之类的字符串

图像存储在AWS S3服务器上。从服务器的角度来看,我认为这样做

  • 将图像(原始记录image_uid)下载到服务器
  • 将图片附加到新的Picture记录
  • 将图片重新上传到AWS
  • 是否有一种只在AWS上复制它的方法,为您提供新的image_uid,以便我可以在新记录上手动设置它?

THX

1 个答案:

答案 0 :(得分:1)

我已经找到了这样做的方法。对于可能需要这个的人:

我原来的Picture对象:

#<Picture:0x007f82570f8f58> {
            :id => 285,
     :image_uid => "2016/10/06/6tacpx09uq_large_0.jpeg",
        :number => nil,
          :main => true,
    :created_at => Thu, 06 Oct 2016 08:59:44 UTC +00:00,
    :updated_at => Thu, 06 Oct 2016 08:59:48 UTC +00:00,
       :user_id => 46,
    :company_id => 27,
        :public => true
}

复制这实际上并不那么难。我使用了Ruby提供的.dup方法。复制多张图片:

pictures.each do |p|
  p2 = Picture.create(image:p.image, user:to_user, company:to_company, public:true, main: p.main)
end

image:p.image是您进行实际图像复制的地方。