数据汇出也是一个常用异步来处理的任务,流程和汇入其实87分像:

  • 建立 RegistraionExport model,这个 model 会纪录是那个 user 做汇出、是哪个 event 要汇出,以及存储最后汇出的档案
  • 建立一个 RegistrationExports controller,这个 controller 让用户可以新增汇出纪录,以及浏览汇出纪录
  • 建立 ExportWorkerJob,这个异步任务会执行汇出操作,并将汇出的档案放到 RegistraionExport model 上
  • 异步任务最后完成时,可以寄 E-mail 通知用户汇出的档案已经准备好了

最后,汇出和汇入的功能要完整实做的话,还需要考虑档案存储的位置。我们用 carrierwave 上传的档案,默认是公开的。但是汇出和汇入的档案,应该也必须要检查有没有权限才行。这部分的实作牵扯到我们使用哪种档案服务器: