Frage

In Ruby on Rails, jedes Modell Einheit hat ein „validate_on_ etwas “ Hook-Methode, die aufgerufen wird, bevor das Unternehmen tatsächlich in die Datenbank beibehalten. Ich würde eine ähnliche Funktionalität in Google App Engine mögen. Ich bin mir bewusst, dass Sie tun können, in ihren Erklärungen die Validierung einzelner Eigenschaften von Argumenten ihnen vorbei. Allerdings, wenn ich möchte mehr Validierung als das tun, ist es ein Ort innerhalb der Modellklassendeklaration, in dem ich das tun kann?

Auch auf der gleichen Linie, manchmal eine Einheit braucht Änderung, bevor sie tatsächlich in die Datenbank beibehalten wird. Ich könnte müssen (Transformation), um die Einheit ändern rechts, bevor es tatsächlich in die Datenbank geschrieben wird. Gibt es einen Platz in der Entity-Klasse Erklärung, die mir erlauben würde, dies zu tun?

Ich bin mir bewusst, dass ich diese Transformationen / Validierungen außerhalb der Klasse setzen. Bu dies scheint kaum gute OO-Design. Es scheint wirklich, wie es sollte Hook-Methoden, die automatisch in einem Modell für diese Art von Bedarf aufgerufen werden würden.

Also meine Frage ist, was ist der am besten geeignete Weg, um die Validierung und Transformation von Unternehmen zu behandeln, bevor sie anhielt werden?

War es hilfreich?

Lösung

Die beste Antwort hängt davon ab, welche Art von Transformationen Sie tun müssen. Es gibt keine generali Pre- / Post-Put-Methoden für die Modelle, aber es gibt einige andere Optionen:

  • Wie Sie erwähnt, können Sie Validierungsfunktionen auf Property Klassenkonstruktoren
  • geben
  • Sie können eine benutzerdefinierte Eigenschaft Klasse verwenden, die Werte programmatisch wie dieses .
  • Sie können Entitäten ändern, da sie auf der untersten Ebene gespeichert sind, mit api Anruf Haken .

Andere Tipps

Sind Sie mit jeder Art von Web-Framework auf der rohen App Engine api? Rails ist ein sehr hohes Niveau Rahmen. Haben Sie sich in Django oder eine der anderen Web-Frameworks? Sie können diejenigen sind näher an Schienen als rohe appengine Einheiten finden.

Alternativ, wenn Sie wollen etwas unteren Ebene, haben einen Blick auf diese Artikel auf Haken

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