在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