Ruby on rails 如何在Rails中保持临时文件超过请求?

Ruby on rails 如何在Rails中保持临时文件超过请求?,ruby-on-rails,wizard,temporary-files,Ruby On Rails,Wizard,Temporary Files,在MyRails应用程序中,用户可以上载Excel文件。在我的模型中,有一个类ImportFile使用附件,如下所示: class ImportFile < ActiveRecord::Base has_attachment :storage => :file_system, :path_prefix => 'public/imports', :max_size => 10.megabytes end 我想做的是向用户显示一个预览,然后让用户选择是添加文件还是放弃文

在MyRails应用程序中,用户可以上载Excel文件。在我的模型中,有一个类ImportFile使用附件,如下所示:

class ImportFile < ActiveRecord::Base
  has_attachment :storage => :file_system, :path_prefix => 'public/imports', :max_size => 10.megabytes
end
我想做的是向用户显示一个预览,然后让用户选择是添加文件还是放弃文件-有两个按钮。当用户选择保存文件时,我遇到了一个问题,因为我刚才创建的临时文件不见了。它在请求之前被删除


有没有人知道如何做到这一点?或者可以让我上传预览文件场景,就像我之前介绍的那样?我已经找了好几天了,但是我没有找到一个。

解决这类问题最可靠的方法是创建一个简单的“上传”跟踪模型,就像你在那里做的那样,但是使用它。这可以配置为处理大量文件

您需要实际保存这些记录,以便它们在请求之间保持。这将导致孤立记录,但一个简单的cron作业或rake任务可以在需要时随时清除所有未使用的文件

在单个目录中创建大量文件通常是个坏主意。回形针有一个路径参数,它将把你的身份证号码分成几个部分,所以记录#903132进入…/90/31/32


保留一个常规附件,如果他们想丢弃它,请删除它,否则就使用它。稍后,请清理所有未使用的附件。

谢谢您的提示-这很有帮助。如果我决定有一些孤儿的记录,我不必切换到回形针反正作为附件施它的工作。
def self.write_to_tmp(data)
    temp_file = Tempfile.new("import", "#{Rails.root}/tmp")
  begin
    temp_file.write(data)
  ensure
    temp_file.close(false)
  end
  temp_file
end