Advertisement
nuringa

Untitled

Jan 25th, 2021
1,091
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.51 KB | None | 0 0
  1. namespace :permissions do
  2.   desc "update members with membership permissions"
  3.   task membership_permissions: :environment do
  4.     permissions = {
  5.       toggle: Permission.find_or_create_by(
  6.       identifier: 'toggle_ready_status',
  7.       description: 'User can toggle ready status of board membership'),
  8.       destroy: Permission.find_or_create_by(
  9.         identifier: 'destroy_membership',
  10.         description: 'User can destroy membership of board')
  11.     }
  12.  
  13.     memberships = Membership.creator + Membership.member
  14.    
  15.     puts "#{memberships.count} memberships found"
  16.  
  17.     memberships.each_with_index do |membership, i|
  18.       next if PermissionsUser.exists?(user: membership.user, permission: permissions[:toggle], board: membership.board)
  19.       next if PermissionsUser.exists?(user: membership.user, permission: permissions[:destroy], board: membership.board)
  20.  
  21.     begin
  22.       PermissionsUser.create!(user: membership.user, permission: permissions[:toggle], board: membership.board)
  23.     rescue StandardError => e
  24.       puts "Failed to add #{e.record.permission.identifier} for #{membership.user.email}: #{e.message}"
  25.     end
  26.  
  27.     begin
  28.       PermissionsUser.create!(user: membership.user, permission: permissions[:destroy], board: membership.board)
  29.     rescue StandardError => e
  30.       puts "Failed to add #{e.record.permission.identifier} for #{membership.user.email}: #{e.message}"
  31.     end
  32.  
  33.       puts "100 memberships processed - #{total_memberships - i} remains" if i % 100 == 0
  34.     end;nil
  35.   end
  36. end
  37.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement