的Rails 4.1 红宝石2级 的Windows 8.1试图删除文件夹carrierwave
CarrierWave不清理空目录。我试图通过在我的模型中执行以下操作来解决此问题。
agent.rb:
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
def destroy
@agent.destroy
respond_to do |format|
format.html { redirect_to agent_url }
format.json { head :no_content }
end
end
当我删除一条记录,我得到了以下错误消息:
undefined method `avatar' for nil:NilClass
并将其指向remove_id_directory中的第一行:
if @agent.avatar
而且该记录未从数据库中删除。如果我删除了这个方法和after_destroy调用,那么这些图像将被删除,记录将从数据库中删除,但文件夹会保留在那里。有任何想法吗?
可能的解决方案:
这工作:
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
你在哪里初始化'@ agent'?发布该代码。 – Pavan
你的意思是控制器的销毁方法?我现在发布了 – EastsideDeveloper
你有没有像'set_agent'这样的'before_filter'方法,可以像'@agent = Agent.find(params [:id])那样实际设置'@ agent'? – Pavan