复制实训的格式

dev_local_2
daiao 5 years ago
parent e282987b92
commit e1c0543559

@ -366,5 +366,30 @@ class InitializationDataController < ApplicationController
end
end
# 获取关卡附件
def get_attachment_data
task_pass = Challenge.where(id: @challenges).where("task_pass like '%/api/attachments/%'").pluck(:task_pass)
@att_ids = []
# 附件的格式为(/api/attachments/ + 附件id的形式因此下面的正文匹配是为了取出附件的id方便迁移attachments
task_pass.each do |tp|
@att_ids += tp.scan(/\(\/api\/attachments\/.+\)/).map{|s|s.match(/\d+/)[0]}
end
end
# 创建附件数据
def copy_attachment_data
return if @att_ids.blank?
attachment_attrs = %i[id container_id container_type filename disk_filename filesize content_type digest author_id created_on
downloads description disk_directory attachtype is_public copy_from quotes is_publish publish_time resource_bank_id unified_setting
cloud_url course_second_category_id]
Attachment.bulk_insert(*attachment_attrs) do |worker|
Attachment.where(id: @att_ids).find_each do |att|
base_attr = att.attributes.except("author_id", "disk_directory", "copy_from")
# 本地版将过关任务的图片迁移到files/localshixuns 目录下, copy_from记录的是他原来的目录结构
worker.add(base_attr.merge({author_id: 1, disk_directory: "localshixuns", copy_from: att.disk_directory}))
end
end
end
end

Loading…
Cancel
Save