Open NilsVollmer opened 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 :)
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.
@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.
Bin dran, kann Montag auf Produktion...
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
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
Deploy To Do: Entfernen der verwaisten Verbindungstabellen: https://gist.github.com/mokus80/97ac6a442f1e70f4ce432389ce0761c6
DONE
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.