Writes that skip callbacks leave no event: update_all, update_columns, dependent: :nullify
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 55/100
Línea de trabajo
Empieza por las asociaciones dependientes de EventRegistration y FormField y, después, inspecciona los sitios de escritura citados: sectors_taggable.rb:52, affiliation.rb:191 y story_share_admin_controller. Traza cómo se registran los eventos del historial en torno a la eliminación de un registro y la eliminación de un campo de formulario. Se considera terminado cuando destruir un registro registra los cambios resultantes en affiliation y notification, y el caso del campo de formulario también deja un rastro.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
🤖 From Claude:
AhoyTrackable hangs off after_create / after_update / after_destroy, so any write that bypasses callbacks is invisible. Distinct from #2351 (which is about who is acting) — here the callback never runs at all.
Where it bites
dependent: :nullify is an update_all. Destroying a parent silently rewrites its children:
- destroying an
EventRegistrationre-points itsnotificationsandaffiliations - destroying a
FormFieldorphans everyform_answer - destroying an
Addressnullifies the affiliations pointing at it
The destroy of the parent is recorded. The rewrite of the children isn't, so the children's history shows nothing where the data changed under them.
Direct column writes:
SectorsTaggableresets the primary flag withupdate_all(sectors_taggable.rb:52)Affiliationsyncs org columns withupdate_columns(affiliation.rb:191)story_share_admin_controllerreorders withupdate_columns
Recommendation
Don't chase every call — most are deliberate (that's why they skip callbacks). Fix the ones where the silence misleads:
- Registration transfer / deletion — the affiliation and notification re-pointing is exactly the kind of thing an admin later asks about.
- Form field deletion — answers changing shape without a trace is a data-integrity story, not just an audit one.
For those, either record an explicit event where the write happens, or replace the bulk write with per-record saves where the volume is small enough (it is, in both cases).
Acceptance
Destroying a registration leaves a record of what happened to its affiliations and notifications — either on their own history or on the registration's.
- Lenguaje dominante
- Ruby
- Estrellas
- 15
- Forks
- 28
- Merge medio
- 1 d 12 min
- PR fusionados (30 d)
- 262
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Incluye un Dockerfile o un archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de rubyforgood/awbw
-
blocked
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
rubyforgood/awbw#2824 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
rubyforgood/awbw#2822 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
rubyforgood/awbw#2160 ·
Los mantenedores suelen responder en 1 día
-
Update callout faq defualt text when the new person subscription launchesPosiblemente ocupada @maebeale la tomó hace 77 días. Abiertoblocked
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
rubyforgood/awbw#2095 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
rubyforgood/awbw#2088 ·
Los mantenedores suelen responder en 1 día
Todos los issues de rubyforgood/awbw
Issues similares
-
Liens externes cassésAbierto
Dificultad 1/5 1-3 horas Aptitud para principiantes 66/100
betagouv/conseillers-entreprises#4770 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
seek4science/seek#2762 ·
Los mantenedores suelen responder en 5 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
rubyevents/rubyevents#2277 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 92/100
Los mantenedores suelen responder en 2 días