Oak*_*510 55 ruby ruby-on-rails carrierwave
我正在使用carrierwave gem上传文件.
我已经构建了一个系统,供用户将图像标记为不合适,并且管理员可以删除图像.据我所知,在图像上调用destroy只会从表中删除路径名.
有没有办法让carrierwave实际删除文件本身?或者当我销毁图像路径时,rails会自动删除文件吗?
oco*_*onn 102
就像@mu_is_too_short所说,你可以使用File#delete.
这是一个代码片段,您可以将其用作帮助程序,并在rails应用程序中进行一些调整.
def remove_file(file)
File.delete(file)
end
Run Code Online (Sandbox Code Playgroud)
或者如果您只是将文件名存储在文件中
def remove_file(file)
File.delete("./path/to/#{file}")
end
Run Code Online (Sandbox Code Playgroud)
bas*_*man 62
不确定CarrierWave为此提供了什么,但您可以FileUtils在Ruby标准库中使用ActiveRecord回调.
例如,
require 'FileUtils'
before_destroy :remove_hard_image
def remove_hard_image
FileUtils.rm(path_to_image)
end
Run Code Online (Sandbox Code Playgroud)
旁注:此代码来自内存.