trabajo-afectivo/db/migrate/20171023000001_fixed_store_upgrade_ror_45.rb

50 lines
1.3 KiB
Ruby

# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
class FixedStoreUpgradeRor45 < ActiveRecord::Migration[5.0]
def up
# return if it's a new setup
return if !Setting.exists?(name: 'system_init_done')
Cache.clear
[Macro, Taskbar, Calendar, Trigger, Channel, Job, PostmasterFilter, Report::Profile, Setting, Sla, Template].each do |class_name|
class_name.all.each do |record|
record.save!
rescue => e
Rails.logger.error "Unable to save/update #{class_name}.find(#{record.id}): #{e.message}"
end
end
Channel.all.each do |channel|
next if channel.options.blank?
channel.options.each do |key, value|
channel.options[key] = cleanup(value)
end
channel.save!
end
User.with_permissions('ticket.agent').each do |user|
next if user.preferences.blank?
user.preferences.each do |key, value|
user.preferences[key] = cleanup(value)
end
user.save!
end
end
def cleanup(value)
if value.instance_of?(ActionController::Parameters)
value = value.permit!.to_h
end
return value if value.class != ActiveSupport::HashWithIndifferentAccess && value.class != Hash
value.each do |local_key, local_value|
value[local_key] = cleanup(local_value)
end
value
end
end