Skip to content

Follow-up: Resolve technical debt for Members::ActivationService and Members::AwaitService

With !86340 (merged) we add another parameter to activate members of either a user's memberships, a member (or its user), or all members of the group. Generally the AwaitService is also very similar and it makes maybe sense to re-use some code.

1. Use Factories

Maybe we could use a for_ method, e.g.

module Members
  class ActivateService
     def self.for_group(group, current_user)
       members = # find members in group
       new(group, members: members, current_user)
     end

     def self.for_member(group, member, current_user)
       members = # find members in group for member
       new(group, members: members, current_user)
     end

     def self.for_user(group, user, current_user)
       members = # find members in group for user
       new(group, members: members, current_user)
     end
  end
end

2. Re-use code

There are parts of the code that are identical (e.g. validations), or updating the data, which we might want to re-use.

Edited by Nicolas Dular