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.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
# 执行示例 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