使用params [:file]作为ActiveJob的参数

时间:2016-05-02 13:00:05

标签: ruby-on-rails

我有一个带有文件上传字段的表单,在提交时会发送params[:file]。我想使用这个参数作为这样的工作的参数:

ImporterJob.perform_later(params[:testrun][:file])

然而,这会返回错误:

ActiveJob::SerializationError in TestrunsController#create
Unsupported argument type: ActionDispatch::Http::UploadedFile

是否可以将文件参数发送给作业?

1 个答案:

答案 0 :(得分:0)

不,使用默认设置是不可能的。由于错误消息暗示for (int i = 0 ; i < attachmentDetails.size(); i++) { Tiedosto tiedosto = myList.get(i); Upload upload = new Upload(); upload.setUuid(attachmentDetails.get(i).getUuid()); upload.setCustomerId(tiedosto.getCustomerId()); upload.setFileName(tiedosto.getFileName()); upload.setFileSize(tiedosto.getFileSize()); upload.setContent(tiedosto.getContent()); uploadList.add(upload); } 仅支持某些参数类型。请在此处查看完整列表:http://edgeguides.rubyonrails.org/active_job_basics.html#supported-types-for-arguments

如果您真的希望能够传递ActiveJob对象,则可以为其编写自定义序列化程序。但是我没有真正意识到将文件传递给后台工作的重点,因为该文件已经上传...