Rails上传excel文件,验证并保存

时间:2016-08-04 07:25:41

标签: ruby-on-rails excel validation file-upload

我正在开发一个上传excel文件的rails引擎,验证它,如果没有错误,它将把它保存到数据库。

现在,当用户安装引擎而不是转到引擎提供的路线时。他将有一个表单来上传excel文件。页面上有两个按钮,即uploadvalidate

一旦用户选择了该文件,并且当他点击上传时,我希望该文件仅上传并且不会保存在db中。一旦我收到消息文件上传成功,我将验证文件。如果它是有效数据的有效excel文件,则将保存到db。现在我没有得到如何去做。我在上传csvexcel文件时看过这个Railscasts视频,但在这里他正在执行验证并使用import操作保存操作,但我希望在用户点击时进行验证和保存操作在validate行动。 This Questions似乎与我的问题相似,但我不知道如何访问上传的文件。我不希望该文件保存在数据库中。我的意思是当用户点击上传按钮时,该文件仅上传而未保存。比我将验证该文件并将其内容保存到db。

对于一些专家来说,这似乎是非常容易和简单的问题,但我对rails很新,我不知道如何去做。

有人请帮我提供示例代码,以便我能够理解工作流程。另请注意,上传和验证操作都在同一页面上。因此,当文件上传时,它需要临时存储在某处,这是我面临的第一个问题。如果有人可以通过上传excel文件的示例代码告诉我工作流程,我可以完成所有任务。我在这里只有问题,因为上传和验证操作都在同一页面上,所以在上传请求之后它需要在该页面上,以便我可以验证该文件。

任何帮助都会受到赞赏,我在轨道上很初学,在这里真的很困惑。

1 个答案:

答案 0 :(得分:0)

两个选项:

  1. 编写代码以上传文件并保存到DB,validated列设置为false。然后验证'按钮将找到未经验证的文件,对其进行验证并将validated设置为true。您可以定期删除某个年龄段的未经验证的文件。如果这样做,请使用像Paperclip这样的辅助宝石。

  2. 放弃文件上传框架,只需手动将上传的文件保存到Tempfile.new 'spreadsheet'即可。 This guide将指导您完成该操作。将该文件名保存到session并使用它在以后进行验证。当您最终准备继续使用DB时,请再次考虑使用帮助程序gem。