我有一个带有文件上传字段的表单,在提交时会发送params[:file]
。我想使用这个参数作为这样的工作的参数:
ImporterJob.perform_later(params[:testrun][:file])
然而,这会返回错误:
ActiveJob::SerializationError in TestrunsController#create
Unsupported argument type: ActionDispatch::Http::UploadedFile
是否可以将文件参数发送给作业?
答案 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
对象,则可以为其编写自定义序列化程序。但是我没有真正意识到将文件传递给后台工作的重点,因为该文件已经上传...