我已经尝试了许多解决方案,但没有一个帮助我。
我已经上传了文件,存储在我的文件夹本地。我需要简单地重命名它的文件名(我没有找到任何简单的方法来做到这一点)或替换文件与新的文件名根据整个有效的过程载波(重命名文件名在SanitizedFile,附件模型,存储::文件等实体)。
所以现在我有一个Attachment
模型:mount_uploader :content, ContentUploader
并尝试使用这样的代码重命名文件名在同一模型:
def filename=(new_filename)
new_filepath = File.join(File.dirname(content.file.path), new_filename)
content.file.move_to(new_filepath)
write_attribute :content, content.file.filename
end
当我检查attachment.content
它仍然有旧的文件名,所以似乎什么都没有发生。因此,文件在物理上重命名,但CW的所有示例(如附件)未更新。
但是当我尝试调用attachment.save
时,我有一个错误:<ActiveModel::Error attribute=content, type=blank, options={}>
。
什么是正确的方法来简单地重命名CarrierWave文件的文件名或将其替换为新的文件名?
1条答案
按热度按时间9rbhqvlz1#
要在更新模型时重命名文件,您可以在模型中定义一个方法,并使用CarrierWave中的
#move_to
方法。例如:
在本例中,
new_filename.ext
应替换为所需的新文件名和扩展名。