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

外部アプリを実行するためのこの呼び出しが配置される場所について混乱していますか? モデルまたはコントローラー (def create)。また、実際にアップロードせずに、paperclip を使用して 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 に答える