我有两个模型,每个模型都有自己的Carrierwave上传器:
class User < ActiveRecord::Base
mount_uploader :avatar, AvatarUploader
end
和
class Bookshelf < ActiveRecord::Base
mount_uploader :image, ImageUploader
end
我希望用户的头像成为他上传的最新书架图像。我试着这样做:
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
不幸的是,这根本没有对头像产生任何影响。我怎么可能实现这个目标呢?
答案 0 :(得分:6)
current_user.avatar = @bookcase.image
current_user.avatar.recreate_versions!
实际上没有保存---你可以:
current_user.avatar.save
或者如你所说:
current_user.update_attribute(:avatar, @bookcase.image)
答案 1 :(得分:1)
如果您的图像文件存储在本地并且您不介意打开文件描述符,您也可以这样做:
current_user.avatar = File.open(@bookcase.image.path)
current_user.save