Handle perfomance issue with team import. Model specs
This commit is contained in:
parent
fd0aca1225
commit
b7a9e41bd2
2 changed files with 55 additions and 9 deletions
|
@ -22,19 +22,32 @@ class UsersProject < ActiveRecord::Base
|
|||
|
||||
class << self
|
||||
def import_team(source_project, target_project)
|
||||
UsersProject.transaction do
|
||||
team = source_project.users_projects.all
|
||||
UsersProject.without_repository_callback do
|
||||
UsersProject.transaction do
|
||||
team = source_project.users_projects.all
|
||||
|
||||
team.each do |tm|
|
||||
# Skip if user already present in team
|
||||
next if target_project.users.include?(tm.user)
|
||||
team.each do |tm|
|
||||
# Skip if user already present in team
|
||||
next if target_project.users.include?(tm.user)
|
||||
|
||||
new_tm = tm.dup
|
||||
new_tm.id = nil
|
||||
new_tm.project_id = target_project.id
|
||||
new_tm.save
|
||||
new_tm = tm.dup
|
||||
new_tm.id = nil
|
||||
new_tm.project_id = target_project.id
|
||||
new_tm.save
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
target_project.update_repository
|
||||
true
|
||||
rescue
|
||||
false
|
||||
end
|
||||
|
||||
def without_repository_callback
|
||||
UsersProject.skip_callback(:destroy, :after, :update_repository)
|
||||
yield
|
||||
UsersProject.set_callback(:destroy, :after, :update_repository)
|
||||
end
|
||||
|
||||
def bulk_delete(project, user_ids)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue