Extract organiser grant/revoke diffing from Admin::WorkshopsController
Mantenedores costumam responder em até 1 dia
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 68/100
Direção de pesquisa
Read Admin::WorkshopsController and the existing app/services/ service objects to follow project conventions. Trace create and update, including assign_organisers_or_default and update_workshop_details, then run the existing admin workshop controller specs. Done means role changes behave identically for create/update, including the default-to-chapter-organisers path, and the controller no longer contains role-diffing logic.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Parent: #2938
Problem
Admin::WorkshopsController mutates Member roles directly from private controller methods, on both create (assign_organisers_or_default) and update (update_workshop_details):
def grant_organiser_access(organiser_ids = [])
organiser_ids.each { |id| Member.find(id).add_role(:organiser, @workshop) }
end
def revoke_organiser_access(organiser_ids)
(@workshop.organisers.pluck(:id).map(&:to_s) - organiser_ids).each do |id|
Member.find(id).revoke(:organiser, @workshop)
end
end
Diffing desired vs current organisers and mutating roles is application-layer orchestration, not HTTP coordination.
Proposed change
- Extract the diff + grant/revoke into a service object under
app/services/(follow the existing*_serviceconventions there; naming up to the implementer). - The controller calls it from
create/update; the default-to-chapter-organisers branch moves with it.
Acceptance
Admin::WorkshopsControllerno longer contains role-diffing logic.- Organiser membership changes identically after create/update, including the default-to-chapter-organisers path.
- Existing admin workshop controller specs pass.
- Linguagem predominante
- Ruby
- Estrelas
- 106
- Forks
- 208
- Merge médio
- 18h 3min
- PRs com merge (30d)
- 74
Preparar o ambiente
- Inclui um Dockerfile ou arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de codebar/planner
-
DashboardQuery eager-loads workshop_host with :sponsors in one join (same host-loss trap as #2975)Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia
-
Add preboot context to strong_migrations destructive-operation messagesTalvez já em andamento @costajohnt assumiu há 4 dias. Abertaenhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
Mantenedores costumam responder em até 1 dia
-
Dual Invitiation issueTalvez já em andamento @mroderick assumiu há 13 dias. Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 42/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 28/100
codebar/planner#3008 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
Todas as issues de codebar/planner
Issues semelhantes
-
documentation
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
alphagov/tech-docs-gem#580 ·
Mantenedores costumam responder em até 1 dia
-
Onboarding form: instructor radio never pre-selected "Yes" (permission vs permissions typo)Talvez já em andamento @ThakuraAnki assumiu hoje. Abertabug
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 72/100
WikiEducationFoundation/WikiEduDashboard#7235 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
Mantenedores costumam responder em até 1 dia
-
enhancement priority: low
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
davidteren/mutineer#361 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 86/100
zerocracy/judges-action#3021 ·
Mantenedores costumam responder em até 2 dias