Carrierwave:在第二个模型中复制文件

nul*_*ull 3 ruby-on-rails carrierwave

我有两个模型,每个模型都有自己的Carrierwave上传器:

class User < ActiveRecord::Base
  mount_uploader :avatar, AvatarUploader
end
Run Code Online (Sandbox Code Playgroud)

和:

class Bookshelf < ActiveRecord::Base
  mount_uploader :image, ImageUploader
end
Run Code Online (Sandbox Code Playgroud)

我希望用户的头像是他上传的最新书架图像.我尝试这样做:

class BookcasesController < ApplicationController
  def create
    @bookcase = current_user.bookcases.build(params[:bookcase])
    if @bookcase.save
      current_user.avatar = @bookcase.image
      current_user.avatar.recreate_versions!
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

不幸的是,这对头像完全没有影响.我怎么可能做到这一点?

Jes*_*ott 7

current_user.avatar = @bookcase.image
current_user.avatar.recreate_versions!
Run Code Online (Sandbox Code Playgroud)

实际上没有保存---你可以:

current_user.avatar.save
Run Code Online (Sandbox Code Playgroud)

或者当你把:

current_user.update_attribute(:avatar, @bookcase.image)
Run Code Online (Sandbox Code Playgroud)

  • 在模型之间复制远程文件(例如S3)时,请查看`remote _*_ url`:http://stackoverflow.com/questions/20361702/carrierwave-creating-a-duplicate-attachment-when-duplicating-its-containing- MOD (2认同)