clarat-org / clarat

An Open Source Charity Directory
http://www.clarat.org/
MIT License
8 stars 10 forks source link

Bug? Modelle mit belongs_to Associations zeigen auf gelöschte Daten #1431

Open NilsVollmer opened 6 years ago

NilsVollmer commented 6 years ago

Wir hatten jetzt von einigen Reseachern berichtete Fälle von Objekten, die zwar eine xyz_id hatten aber die Instanz des Modells war gelöscht.

Eigentlich sollte rails beim Löschen von Objekten automatisch dafür sorgen, dass zumindest alle belongs_to-id-verweise auf nil gesetzt werden. Vermutlich funktioniert das beim Löschen im neuen Backend gerade nicht - das muss aber noch verifiziert werden (ich habe nur die Daten gefunden und es noch nicht selbst ausprobiert).

@Twiek bitte priorisieren

noch TODO: Datenbank nach kaputten Daten (id-Verweise auf gelöschte Objekte) durchsuchen und die Felder auf nil setzen. Eventuell mit Researchern Rücksprache halten, ob sie diese invalid Objekte als Export haben wollen oder die dann einfach nach und nach gefixed werden sollen.

KonstantinKo commented 6 years ago

Am besten alle association mit einem foreign_key NOT NULL auf dependent: :destroy, mit WPQ besprechen welche Ausnahmen es braucht, für diese side effects schreiben um associations zu invalidieren … und #1430 implementieren damit researcher wissen was da gelöscht wird :)

NilsVollmer commented 6 years ago

Update: mehrfach berichtet von Researchern: ContactPerson hat eine email_id, die email wird gelöscht aber die email_id der Kontaktperson wird nicht auf nil gesetzt. email_id ist kein Pflichtfeld!

Möglicherweise ein separater Bug.

NilsVollmer commented 6 years ago

@Twiek @mokus80 Da die Researcher jetzt an den Aktualisierungen arbeiten, werden wahrscheinlich häufiger Dinge gelöscht, wodurch der Bug uns vermutlich mehr Probleme machen wird.

Wir sollten zumindest mit dem Bugfix aber danach auch mit dem verbessertem Löschen im neuen Backend schnell fertig werden.

mokus80 commented 6 years ago

Bin dran, kann Montag auf Produktion...

NilsVollmer commented 6 years ago

TODO: jetzt nach dem Deploy sollten wir alle Objekte durchsuchen, die davon betroffen sind und die _id Felder auf nil setzen, wenn das verlinkte Objekt mittlerweile gelöscht wurde.

Wenn die Objekte dadurch invalid werden/geworden sind, sollten wir sie wahrscheinlich jemanden zur händischen Überprüfung geben.

@Twiek Was meinst du? @mokus80

mokus80 commented 6 years ago

Hier die Listen mit (potentiell) invaliden Objekten, Tian schaut sie sich an.

Angebote: https://gist.github.com/mokus80/99e3c8a233d75aa575fb03d60596df73 https://gist.github.com/mokus80/4160081d9acb54df9d139e1d7990e882

Weitere: https://gist.github.com/mokus80/07603ecb47dd8673a2ea0b0891ad6184

Visible Angebote ohne Solution Category: https://gist.github.com/mokus80/2057cd4ed84c4cfa7e82e2c8dc6f6041

mokus80 commented 6 years ago

Deploy To Do: Entfernen der verwaisten Verbindungstabellen: https://gist.github.com/mokus80/97ac6a442f1e70f4ce432389ce0761c6

DONE