0

在我的 Rails 项目中,我需要用户上传一个文件 (input_file),我将使用外部应用程序处理该文件。一旦完成,我想将处理后的文件作为不同的附件(输出文件)附加到同一模型。

我已经能够创建一个表单并使用回形针来允许用户将 input_file 上传到我的模型FileProcessor。我不确定下一步如何在 input_file 上调用可执行文件并将其保存为 output_file。

基于回形针,一旦文件上传,我可以通过 input_file.path 访问路径

output_file = %w{external_app input_file.path out_file_name}

Class FileProcessor
 has_attached_file :input_file
 has_attached_file :output_file

我对运行外部应用程序的调用放置在哪里感到困惑?在模型或控制器中(定义创建)。另外,我如何使用回形针将 output_file 与模型相关联而无需实际上传。

4

1 回答 1

1

此类代码的位置取决于您的外部流程执行的业务类型。根据问题中描述的要求,它就像这样简单:

class FileProcessor < ActiveRecord
  ...
  after_validation do |fp|
    tmp_file = "/tmp/#{rand}"
    system "/usr/bin/awesome.sh #{fp.input_file.path} > #{tmp_file}"
    fp.output_file = File.open(tmp_file)
  end
  ...
end

我希望,这就是你要找的。

于 2013-07-15T09:39:20.780 回答