2017-08-31 12:06:56 +08:00
|
|
|
class ResolveDuplicateGroupNames < ActiveRecord::Migration[4.2]
|
2014-12-16 20:07:15 +08:00
|
|
|
|
|
|
|
def up
|
|
|
|
results = Group.exec_sql 'SELECT id FROM groups
|
|
|
|
WHERE name ILIKE
|
|
|
|
(SELECT lower(name)
|
|
|
|
FROM groups
|
|
|
|
GROUP BY lower(name)
|
|
|
|
HAVING count(*) > 1);'
|
|
|
|
|
|
|
|
groups = Group.where id: results.map { |r| r['id'] }
|
|
|
|
groups.group_by { |g| g.name.downcase }.each do |key, value|
|
|
|
|
value.each_with_index do |dup, index|
|
2017-07-28 09:20:09 +08:00
|
|
|
dup.update! name: "#{dup.name[0..18]}_#{index + 1}" if index > 0
|
2014-12-16 20:07:15 +08:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def down
|
|
|
|
# does not reverse changes
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|