ruby-on-rails - 如何创建 Rails 表单以批量创建记录,每个记录都包含直接上传到 S3 的 Active Storage 附件?
问题描述
我有一个 Ruby on Rails 应用程序,它允许使用 Active Storage 直接上传创建记录,如下所述:https ://edgeguides.rubyonrails.org/active_storage_overview.html#direct-uploads
一切正常。现在我想有一种方法来设置批处理记录创建也使用直接上传,但似乎无法找出最佳方法。
假设我有一个名为 HomeMovie 的模型,它具有各种属性和一个视频附件。我希望能够一个接一个地填写多个 HomeMovie 表单,单击提交一次,然后开始上传每个带有大附件的文件,然后就可以离开了。使用我目前的设置,一次做一个,使用这些大型附件需要太长时间,并且需要不断的保姆。任何帮助是极大的赞赏。
我正在使用 Rails 5.2.3
解决方案
使用 Sidekiq 设置某种微服务/作业,让您基本上可以将视频作为单独的作业进行排队,怎么样?
本质上,您的逻辑将排队异步作业以处理附件;那么这只是正确设置循环的问题。
循环示例
def bulk_insert(videos) #with videos being an array or collection
videos.each do |vid|
#do whatever processing and record creation, then
VideoProcessJob.perform_async(vid["attachment_key"])
end
end
工作示例
class VideoProcessJob(video_attachment)
#assumes a service/module for processing the videos
VideoProcessor.new(video_attachment).process_video_attachment_logic
end
推荐阅读
- python - 从 pandas 的数据框中仅提取包含“True”值的列
- ios - 如何将数据从视图控制器传递到表视图控制器?
- node.js - 如何在 var 中拆分数据并推送到 nodejs 中的数组
- arguments - 函数定义中的函数调用中的参数在 Maxima 中没有被替换
- javascript - 当存在跨源问题时,我们如何将事件侦听器添加到 iframe 内的 DOM 更改?
- reactjs - 如何在 React 中将 JSON 数据映射为表格
- c - C回调函数参数范围
- powerbi - 将图表从类别动态更改为子类别
- python - 如何让 Python Spyder 输出显示整个输出
- python - 如何使用输入语句打印 for 循环索引?