Project

General

Profile

« Previous | Next » 

Revision 7455449e

Added by Dominic Cleal about 10 years ago

fixes #5540 - also clone builtin roles during migration

(cherry picked from commit 5f72ef39f3bee84942d6706e2d9954d219a56ee4)

View differences:

db/migrate/20140219183343_migrate_permissions.rb
class FakeRole < ActiveRecord::Base
set_table_name 'roles'
scope :builtin, lambda { |*args|
compare = 'not' if args.first
where("#{compare} builtin = 0")
}
has_many :filters, :dependent => :destroy, :class_name => 'FakeFilter', :foreign_key => 'role_id'
has_many :permissions, :through => :filters, :class_name => 'FakePermission', :foreign_key => 'permission_id'
end
......
say "Migrating user '#{user.login}'"
say "... cloning all roles"
clones = user.roles.builtin(false).map { |r| clone_role(r, user) }
user.roles = clones + user.roles.builtin(true)
user.roles = clones = user.roles.map { |r| clone_role(r, user) }
say "... done"
filters = Hash.new { |h, k| h[k] = '' }
......
end
def self.clone_role(role, user)
clone = role.dup
clone.name = role.name + "_#{user.login}"
clone = role.dup
clone.name = role.name + "_#{user.login}"
clone.builtin = 0
clone.save!
role.filters.each { |f| clone_filter(f, clone) }

Also available in: Unified diff