Project

General

Profile

Download (1.96 KB) Statistics
| Branch: | Tag: | Revision:
class DivideLookupKeyPermissions < ActiveRecord::Migration[4.2]
class FakeFilter < ApplicationRecord
self.table_name = 'filters'
belongs_to :role
has_many :filterings
has_many :permissions
end

class FakeFiltering < ApplicationRecord
self.table_name = 'filterings'
end

class FakePermission < ApplicationRecord
self.table_name = 'permissions'
end

def up
permissions_to_update = Permission.where(:name => ['view_external_variables', 'edit_external_variables', 'create_external_variables', 'destroy_external_variables'])
permissions_to_update.update_all(:resource_type => 'VariableLookupKey')

permissions_to_update.each do |original_permission|
permission = FakePermission.where(:name => original_permission.name.sub('variables', 'parameters'), :resource_type => 'PuppetclassLookupKey').first_or_create
Filtering.where('permission_id' => original_permission.id).distinct.each do |filtering|
filter = FakeFilter.create(:search => filtering.filter.search, :role_id => filtering.filter.role_id,
:taxonomy_search => filtering.filter.taxonomy_search)
FakeFiltering.create(:filter_id => filter.id, :permission_id => permission.id)
end
end
end

def down
new_permission_names = ['view_external_parameters', 'edit_external_parameters', 'create_external_parameters', 'destroy_external_parameters']
permissions_to_delete = Permission.where(:name => new_permission_names)
filterings_to_delete = Filtering.where('permission_id' => permissions_to_delete.pluck(:id))
filterings_ids = filterings_to_delete.pluck(:id)
filterings_to_delete.delete_all
Filter.joins(:filterings).where('filterings.id' => filterings_ids).delete_all
permissions_to_delete.delete_all
Permission.where(:name => ['view_external_variables', 'edit_external_variables', 'create_external_variables', 'destroy_external_variables'])
.update_all(:resource_type => 'LookupKey')
end
end
(314-314/408)