You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
# 执行示例 RAILS_ENV=production bundle exec rake migrate_course_student:student args=3835,2526,21950,1000
|
|
|
|
|
# args 第一个课程 course_id,第二个参数是学校school_id,第三个参数是部门id,第四个参数是迁移数量
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
desc "同步学校的学生"
|
|
|
|
|
namespace :migrate_course_student do
|
|
|
|
|
if ENV['args']
|
|
|
|
|
course_id = ENV['args'].split(",")[0] # 对应课堂的id
|
|
|
|
|
school_id = ENV['args'].split(",")[1] # 对应学校id
|
|
|
|
|
department_id = ENV['args'].split(",")[2] # 对应部门id
|
|
|
|
|
limit = ENV['args'].split(",")[3] # 限制导入的数量
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
task :student => :environment do
|
|
|
|
|
course = Course.find course_id
|
|
|
|
|
users = User.joins(:user_extension).where(user_extensions: {school_id: school_id, department_id: department_id, identity: 1}).limit(limit)
|
|
|
|
|
user_ids = []
|
|
|
|
|
|
|
|
|
|
users.each do |user|
|
|
|
|
|
if user.student_id.present? && !course.students.exists?(user_id: user.id)
|
|
|
|
|
begin
|
|
|
|
|
CourseMember.create!(course_id: course_id, user_id: user.id, role: 4)
|
|
|
|
|
user_ids << user.id
|
|
|
|
|
rescue Exception => e
|
|
|
|
|
Rails.logger(e.message)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
CourseAddStudentCreateWorksJob.perform_later(course_id, user_ids)
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
end
|