2009-03-06 9 views
1

Ich verwende ActiveRecord, um Informationen über Benutzer zu verwalten. Die Benutzerklasse verfügt über die erwarteten Methoden load(), insert(), update() und delete(), Setter, Getter und einige andere. Aber ich habe Schwierigkeiten zu entscheiden, ob bestimmte andere Methoden in der Benutzerklasse enthalten sein sollten oder nicht, oder von Mitarbeitern gehandhabt werden sollten.Ermitteln der Klassenverantwortung und Mitarbeiter

Hier ist ein Beispiel:

Es gibt mehrere Transaktionen, die ein Benutzer möglicherweise verlangen, dass Bestätigung. Dies wird auf herkömmliche Weise gehandhabt - Senden einer E-Mail an den Benutzer mit einem Link; Durch Klicken auf den Link wird bestätigt, dass der Benutzer die Transaktion tatsächlich fortsetzen möchte. Ein Hash des Verifizierungsschlüssels und dessen Ablaufdatum/-uhrzeit bleiben als Teil des Benutzerdatensatzes bestehen.

Wo soll ich die Linie in diesem Prozess zeichnen? Sollte es einen Mitarbeiter geben, der die Verifizierung übernimmt (zB indem der Verify-Schlüssel aus der Abfragezeichenfolge übernommen wird und ein Benutzerobjekt als Parameter akzeptiert wird)? Oder sollte dies intern von der Klasse User behandelt werden (Übergeben des Klartextverifizierungsschlüssels in einem Methodenaufruf)?

Die nächste Sache, die bei der Verifizierung passieren würde, ist natürlich, dass die Transaktion fortfahren würde, die eine Aktualisierung des aktiven Datensatzes erfordert - und dort, so scheint mir, muss die Benutzerklasse verantwortlich sein.

Irgendwelche Vorschläge?

Antwort

0

Sie sollten diese Aufgabe an einen Mitarbeiter delegieren, der eine Tabelle confirmations verwaltet.

Sie würden das Modell Confirmation verwenden, um alle Bestätigungsanforderungen zu verfolgen. Das Modell wird zu User gehören, sowie den Bestätigungs-Hash und die zu bestätigende Aktion verwalten (z. B. activate_account, change_password oder change_email etc.). (->user.activate(), change_password ->user.setPassword() usw. z.B. activate_account) und entfernen Sie die Confirmation vom confirmations Tisch nach erfolgreichem Abschluss

Confirmation Der Controller würde zum Validieren des Bestätigungs Hash und Verkettungs die entsprechende Aktion auf dem entsprechenden Modell verantwortlich.

Dies ermöglicht eine bessere Trennung der Logik und ermöglicht Ihnen eine bessere Skalierung, z. mehr als eine ausstehende Bestätigung für einen bestimmten Benutzer zu unterhalten (sagen Sie Bestätigung zur Änderung des Passworts und Bestätigung, um etwas anderes zu ändern.)

+0

@Vlad - Danke für die Reality-Check. Dies ist zweifellos die richtige Wahl! – PartialOrder

Verwandte Themen