Frage

ich eine Galerie entwickle die Nutzer Fotos, Kommentare zu schreiben erlaubt, Stimme und tun viele andere Aufgaben.

Jetzt denke ich, dass es richtig ist, Benutzern zu erlauben, alle ihre Daten abmelden und zu entfernen, wenn sie wollen. Allerdings ist es schwierig, so etwas zu erlauben, weil Sie das Risiko brechen Ihre Anwendung ausführen (zB was soll ich tun, wenn ein Kommentar viele Antworten hat? Was soll ich mit Seiten zu tun, dass viele Überarbeitungen von verschiedenen Benutzern haben?).

Fotos können leicht entfernt werden, sondern auch für andere Daten (d Kommentare, Korrekturen ...) Ich dachte, dass es drei Möglichkeiten:

  • weist es die Admin
  • weisen Sie es einem Benutzer namens "entfernt-user"
  • die aktuellen Verbände mantain (dh der Benutzer-ID) und nur Benutzerdaten umbenennen (zB einen neuen Benutzernamen wie „entfernt-user-24“ zuweisen und eine nicht vorhandene E-Mail wie „noreply-entfernt-User- 24@mysite.com "

Was sind die besten Praktiken zu folgen, wenn wir den Benutzern erlauben, ihre Konten zu entfernen? Wie Sie implementieren sie (vor allem in Rails)?

War es hilfreich?

Lösung

Im Idealfall in einem System würden Sie nicht wollen, um Daten „schwer löschen“. Die beste Weise, die ich kenne, und dass wir in den vergangenen umgesetzt haben, ist „soft löschen“. Pflegen Sie eine Statusspalte in allen Datentabellen, die idealerweise auf die Tatsache bezieht, ob die Zeile aktiv ist oder nicht. Jede Zeile, wenn erstellt ist „Aktiv“ standardmäßig; jedoch als Einträge werden gelöscht; sie werden deaktiviert.

Alle Auswahlabfragen, die nur für „aktive Aufzeichnungen“ Daten auf dem Bildschirm Filterergebnisse anzuzeigen. Auf diese Weise können folgende Vorteile erhalten: 1. Datenrettung möglich ist. 2. Sie haben eine geplante Aufgabe auf Datenbankebene, die Pflege harter Löschungen von einmal in einer Art und Weise stattfinden kann; wenn wirklich benötigt wird. (Wie eine SQL-Prozedur oder etwas) 3. Sie können einen Admin-Bildschirm in der Lage sein zu entscheiden, welche Konten, Einträge usw. Sie wirklich, dass zum Löschen markieren wollen 4. temperory Sperrung des Kontos kann auch mit derselben Lösung umgesetzt werden.

In prod Umgebungen, in denen ich gearbeitet habe, ein harte löschen ist ein strikter No-No. Infact Audits werden für Löschungen auch beibehalten. Aber wenn die Anwendung ist wirklich klein; es bis zu Benutzer sein würde.

Ich würde immer noch ein „virtuelles löscht“ oder einen „soft löscht“ mit regelmäßiger Bereinigung auf db Ebene vorschlagen; die schnellen effiziente und optimierte Art und Weise wird die Säuberung.

Andere Tipps

Ich habe normalerweise diese Art von Problem, indem sie mit einer aktiven Fahne Benutzer gelöst, und einfach aktiv auf false gesetzt, wenn der Benutzer gelöscht. Auf diese Weise bleibe ich referentielle Integrität über das gesamte System selbst wenn ein Benutzer „gelöscht“. In der Business-Schicht zu validieren ich immer ein Benutzer, bevor diese aktiv ist, Operationen durchzuführen. Ich auch inaktive Benutzer filtern beim Abrufen von Daten.

Das übliche, was zu tun ist, anstatt sie aus einer Datenbank zu löschen, fügen Sie ein boolean-Flag-Feld und hat es für gültige Benutzer und falsch für ungültige Benutzer wahr sein. Sie müssen Code hinzufügen auf die Flagge zu filtern. Sie sollten auch alle relevanten Daten aus dem Benutzer entfernen, die Sie können. Der primäre Zweck dieses Flags ist die Links intakt zu halten. Es ist eine Variante der Umbenennung der Daten des Benutzers, aber die Flagge wird leichter sein, zu überprüfen.

Ich mag generell nichts löschen und stattdessen entscheiden Datensätze als gelöscht / nicht veröffentlichten Verwendung Staaten (mit AASM d wirkt als Zustandsmaschine) zu markieren.

Ich ziehe Zustände und Ereignisse nur Fahnen mit, wie Sie Ereignisse verwenden können Attribute zu aktualisieren und E-Mails usw. in einem Foul Swoop zu senden. Dann Staaten überprüfen, um zu entscheiden, was später zu tun.

HTH.

würde ich empfehlen, in einem Löschdatum Feld setzen, dass das Datum / Uhrzeit den Benutzer abgemeldet enthält - nicht nur auf den Benutzerdatensatz, sondern auf alle Informationen zu diesem Benutzer verwendet. Die App sollte das Feld überprüfen, bevor etwas angezeigt wird. Sie können dann eine harte für alle Datensätze 30 Tage (Wahl der Zeit) nach dem Löschdatum löschen laufen. Dies wird den Informationen erlaubt nicht angezeigt werden (Sie werden wahrscheinlich die App in wenigen Orten zu aktualisieren), die Zeit, damit der Benutzer wieder anmelden (zufällige oder Umdenken) und einen geplanten Prozess alte Daten zu löschen. Ich würde alle Informationen zu dem Mitglied und alle damit verbundene Kommentare über das Mitglied oder ihre vorherigen veröffentlichten Daten entfernen (Fotos, etc.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top