Project

General

Profile

Download (1.14 KB) Statistics
| Branch: | Tag: | Revision:
class MigrateCommonParameterPermissions < ActiveRecord::Migration[4.2]
class FakeFilter < ApplicationRecord
self.table_name = 'filters'
end

def up
all_new_permissions = Permission.where(:name => ['view_params', 'edit_params', 'create_params', 'destroy_params'])

affected = Filter.includes(:permissions).where(:permissions => {:name => ['view_globals', 'edit_globals', 'create_globals', 'destroy_globals']})
affected.each do |filter|
new_names = filter.permissions.map { |old| old.name.sub(/globals/, 'params') }
new_permissions = all_new_permissions.select do |new|
new_names.include?(new.name)
end

fake_filter = FakeFilter.find(filter.id)
new_search = "type = CommonParameter"
new_search = '(' + filter.search + ') and ' + new_search if filter.search.present?
fake_filter.update_attribute :search, new_search
filter.permissions = new_permissions
end

Permission.where(:name => ['view_globals', 'edit_globals', 'create_globals', 'destroy_globals']).destroy_all
end

def down
# we can't tell what if CommonParameter search was set by user or previous migration
end
end
(339-339/405)