Project

General

Profile

Download (1.44 KB) Statistics
| Branch: | Tag: | Revision:
class AddViewParamsToFiltersWithEdit < ActiveRecord::Migration
class FakeFiltering < ApplicationRecord
self.table_name = 'filterings'
end

class FakeFilter < ApplicationRecord
self.table_name = 'filters'
end

def up
filters_to_update = Filter.joins(:permissions).where("permissions.name IN ('edit_params', 'create_params', 'destroy_params')").distinct
view_params = Permission.where(:name => 'view_params', :resource_type => 'Parameter').first_or_create
filters_to_update.each do |filter|
FakeFiltering.create(:filter_id => filter.id, :permission_id => view_params.id)
end

viewer_role = Role.where(:name => 'Viewer')
site_manager_role = Role.where(:name => 'Site manager')
[ viewer_role, site_manager_role ].each do |role|
if role.present? && Filtering.joins(:filter).where(:permission_id => view_params.id).where("filters.role_id = #{role.first.id}").empty?
filter = FakeFilter.create(:role_id => role.first.id)
FakeFiltering.create(:filter_id => filter.id, :permission_id => view_params.id)
end
end
end

def down
view_params = Permission.where(:name => 'view_params').first

if view_params.present?
Filter.joins(:filterings).where(:role_id => Role.where(:name => [ 'Viewer', 'Site manager' ])).where("filterings.permission_id = #{view_params.id}").destroy_all
Filtering.where(:permission_id => view_params.id).delete_all
view_params.delete
end
end
end
(309-309/377)