Preload workshop_host in DashboardQuery.upcoming_events_for_user (per-workshop N+1 on /dashboard)
Mantenedores costumam responder em até 1 dia
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 82/100
Direção de pesquisa
Comece em app/queries/dashboard_query.rb por volta das linhas 27-40, onde upcoming_events_for_user usa eager_load(:sponsors) sem carregar o host do workshop. Verifique como Workshop#host percorre workshop_host e sponsor, e como o PR #3066 adicionou seu preload. Adicione preload(workshop_host: :sponsor) ao lado do join existente e deixe :workshop_host fora do eager_load, como alerta a issue. Está concluído quando a contagem de consultas de /dashboard não cresce mais com o número de workshops.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
DashboardQuery.upcoming_events_for_user runs one workshop_host lookup per workshop on every /dashboard render. Give it the same treatment as PR #3066: keep :sponsors in the join and add preload(workshop_host: :sponsor).
app/queries/dashboard_query.rb:27-40eager_loads:sponsorsbut never loads:workshop_hostWorkshop#hostlazy-loads throughworkshop_host&.sponsor, so each card costs up to two extra queries — up to2 × DashboardQuery::MAX_WORKSHOP_QUERYper render- The
dashboardaction renders the sameEventCardComponent→WorkshopPresenter#venue→model.hostpath that PR #3066 fixed for the homepage - Do not add
:workshop_hostto theeager_loadlist: sharing theworkshop_sponsorsjoin alias is the #2975 host-loss trap
Raised from the review of PR #3066; the gap predates that PR.
- Linguagem predominante
- Ruby
- Estrelas
- 106
- Forks
- 208
- Merge médio
- 19h 51min
- PRs com merge (30d)
- 57
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
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 3/5 Meio dia Facilidade para iniciantes 35/100
codebar/planner#3069 · 1 comentário · 1 reação ·
Mantenedores costumam responder em até 1 dia
-
Dual Invitiation issueTalvez já em andamento @mroderick assumiu há 20 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
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 18/100
codebar/planner#3006 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
Todas as issues de codebar/planner
Issues semelhantes
-
Add a dark modeAbertaaccessibility enhancement good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
samiromer2/Ruby-Consent-Portal#35 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
Mantenedores costumam responder em até 1 dia
-
👩💻 équipe CE fonctionnalité
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 63/100
betagouv/conseillers-entreprises#4779 ·
Mantenedores costumam responder em até 1 dia
-
Poetry updater rejects OR (||) Python constraints in PyprojectPreparer#update_python_requirementAbertaL: python L: ruby:bundler
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
dependabot/dependabot-core#16819 ·
Mantenedores costumam responder em até 1 dia