首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试删除载波文件夹

尝试删除载波文件夹
EN

Stack Overflow用户
提问于 2014-06-09 05:12:04
回答 1查看 731关注 0票数 2

Rails 4.1 Ruby 2 Windows 8.1

CarrierWave不清理空目录。我试图通过在我的模型中做下面的事情来解决这个问题。

agent.rb:

代码语言:javascript
复制
after_destroy :remove_id_directory

def remove_id_directory
  if @agent.avatar
    folder_path = File.join(Cw_storage_folder, 'agent', 'avatar', @agent.id)
    FileUtils.rm_rf(folder_path)
  end
end

来自agents_controller.rb

代码语言:javascript
复制
def destroy
  @agent.destroy
  respond_to do |format|
    format.html { redirect_to agent_url }
    format.json { head :no_content }
  end
end     

删除记录时,会收到以下错误消息:

代码语言:javascript
复制
undefined method `avatar' for nil:NilClass

它指向remove_id_directory中的第一行:

代码语言:javascript
复制
if @agent.avatar

数据库中的记录也没有被删除。如果删除此方法和after_destroy调用,则图像将被删除,记录将从DB中删除,但文件夹将保留在那里。有什么想法吗?

可能的解决办法:

这样做是可行的:

代码语言:javascript
复制
  after_destroy :remove_cw_id_directory

  def remove_cw_id_directory
    FileUtils.rm_rf(File.join(Cw_storage_folder, 'agent', 'agent', self.id.to_s)) if self.avatar
  end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-09 10:50:48

您的问题是您没有在代理模型上实例化任何@agent变量。如果要访问记录属性,则需要使用self。因此,将remove_id_directory方法更改为如下所示:

代码语言:javascript
复制
def remove_id_directory
    FileUtils.rm_rf(File.join(Cw_storage_folder, 'agent', 'avatar', self.id)) if self.avatar
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24114010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档