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.
class Ecs :: CreateCourseManagerService < ApplicationService
Error = Class . new ( StandardError )
COURSE_MANAGER_COUNT_LIMIT = 2 # 课程管理员数量限制
attr_reader :ec_course , :user_ids
def initialize ( ec_course , user_ids )
@ec_course = ec_course
@user_ids = user_ids
end
def call
users_count = User . where ( id : user_ids ) . count
raise Error , '用户不存在' if users_count != user_ids . size
if ec_course . ec_course_users . exists? ( user_id : user_ids )
raise Error , '用户已经是该课程的管理员'
end
if ec_course . ec_course_users . count + user_ids . size > COURSE_MANAGER_COUNT_LIMIT
raise Error , " 课程管理员数量过多(最多 #{ COURSE_MANAGER_COUNT_LIMIT } ) "
end
ActiveRecord :: Base . transaction do
user_ids . each do | user_id |
ec_course . ec_course_users . create! ( user_id : user_id )
end
end
end
end