在ruby中删除文件
我正在使用carrierwave gem来上传文件。 我已经build立了一个系统,让用户把图像标记为不合适的,pipe理员去除图像。 从我所知道的情况来看,在图像上调用destroy只会从tabel中删除path名。 有没有办法让ruby实际上删除文件本身? 或者应该轨道自动删除文件,当我摧毁图像path?
不知道CarrierWave为此提供了什么,但是可以使用ActiveRecordcallback函数在Ruby标准库中使用FileUtils。
例如,
require 'FileUtils' before_destroy :remove_hard_image def remove_hard_image FileUtils.rm(path_to_image) end
旁注:这段代码来自内存。
就像@ mu_is_too_short所说的,你可以使用File#delete 。
这里有一个代码片段,你可以在你的Rails应用程序中使用它作为一个帮手。
def remove_file(file) File.delete(file) end
或者如果你只是在文件中存储的文件名
def remove_file(file) File.delete("./path/to/#{file}") end
如果你想删除一个文件,但不想指定完整的文件名,你可以使用下面的。
也可以用来删除具有特定扩展名的目录中的许多文件或所有文件…
file = Rails.root.join("tmp", "foo*")
要么
file = Rails.root.join("tmp", ".pdf")
files = Dir.glob(file) #will build an array of the full filepath & filename(s) files.each do |f| File.delete(f) end