2017-04-28 04:17:40 +08:00
#
# Copyright (C) 2011 - present Instructure, Inc.
#
# This file is part of Canvas.
#
# Canvas is free software: you can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the Free
# Software Foundation, version 3 of the License.
#
# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
# details.
#
# You should have received a copy of the GNU Affero General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
2016-11-18 06:06:00 +08:00
class FixEnrollmentRootAccountId < ActiveRecord :: Migration [ 4 . 2 ]
2015-11-05 05:38:51 +08:00
tag :predeploy
2011-11-22 01:55:44 +08:00
def self . up
case adapter_name
when " PostgreSQL "
2015-09-01 02:09:52 +08:00
update " UPDATE #{ Enrollment . quoted_table_name } SET root_account_id = c.root_account_id FROM #{ Course . quoted_table_name } As c WHERE course_id = c.id AND enrollments.root_account_id != c.root_account_id "
2011-11-22 01:55:44 +08:00
else
2013-03-19 23:48:47 +08:00
Course . find_each do | c |
bad_enrollments = c . enrollments . where ( " enrollments.root_account_id<>courses.root_account_id " ) . pluck ( :id )
Enrollment . where ( :id = > bad_enrollments ) . update_all ( :root_account_id = > c . root_account_id )
2011-11-22 01:55:44 +08:00
end
end
end
def self . down
end
end