Frage

Ich habe ein ziemlich komplexes Modell mit vielen Feldern, has_many Verbänden, hinzugefügt Bildern von image_column etc ...

Das neue Objekt wird von einem mehrseitigen Formular (8 Stufen) hinzugefügt werden? - Wie soll ich die Validierung und Ausbreitung zwischen diesen Schritten erreichen

Ich denke, validation_group für die Definition Validierungen für jeden Schritt, was zu Gesamtdesign nützlich sein könnte?

War es hilfreich?

Lösung

Für Gesamtdesign, könnten Sie in das Konzept einer Presenter Schicht aussehen sollen (Jay Felder definiert sie in seinem Blog-Eintrag

Andere Tipps

Sie können eine Reihe von Methoden, z.B. step_1, step_2, und jeder überprüft, um zu sehen, dass die erforderlichen Daten aus dem vorherigen Schritt vorgelegt wurden. Sie könnten speichern Daten in der Sitzung, so dass zum Beispiel Schritt 3 immer noch Zugriff auf alle Daten, die in Schritt gesammelt und analysiert 1. Im letzten Schritt haben würde, setzen Sie alle Daten, die Sie in der Sitzung und die Daten gespeichert haben aus dem vorletzten Schritt zu verwenden, und eine neue Zeile in der Datenbank erstellen oder was auch immer Sie die Daten für das sammeln sind. Wenn ein Benutzer einen Schritt vermasselt, leiten sie zum vorherigen Schritt und füllen sie das Formular mit den Daten haben sie ausfüllen; z.B. wenn der Benutzer vermasselt Schritt 2 und sendet das Formular führt zu Schritt 3, um das Problem in Ihrer step_3 Methode zu fangen, leitet die Benutzer auf die step_2 Methode, und sicher sein, die Formelemente in Schritt 2 sind bereits gefüllt.

Wenn Sie wie Sie nicht zum Speichern von Daten in der Sitzung wollen gehen, könnten Sie eine neue Datenbankzeile erstellen, nachdem der Benutzer Schritt abgegeben hat 1 und aktualisiert nur die Felder in dieser Reihe, wie Sie neue Daten in jedem aufeinander folgenden Schritt sammeln . Sie könnten einige Flags für ‚vollständig‘ haben auf der Reihe, es zunächst auf 0 setzen und dann auf 1 gesetzt, nachdem die Benutzer alle Schritte erfolgreich abgeschlossen werden.

Sie könnten auch Benutzer erlauben, zum vorherigen Schritten zu gehen (zum Beispiel des Benutzers Rückkehr lassen Schritt 3, wenn er auf Schritt 5).

Sagen Sie den ersten Schritt ein Formular mit Feldern ‚Name‘ hat und ‚E-Mail‘. In Ihrer step_2 Methode, sollten Sie überprüfen, ob params[:name] und params[:email] weitergegeben wurden und gültig sind. Speichern Sie die in der Sitzung oder einer Datenbankzeile, aber haben Sie sich. Dann wird in Schritt 2 haben Sie ein Formular mit Feldern ‚Alter‘ und ‚Geschlecht‘. In Ihrer step_3 Methode, sollen Sie, dass params[:age] und params[:gender] verifiziert wurden bestanden und sind gültig, und Sie müssen auch sicherstellen, dass der Benutzer Schritt 1 abgeschlossen hat, einen Benutzer von der Eingabe der URL für den Zugriff Schritt 3 direkt zu verhindern. Und so weiter.

class Campaign < ActiveRecord::Base
    with_options(:if => lambda { |campaign| campaign.on_or_past_step(:spam_can) }) do |spam_can|
      spam_can.validates_associated  :spam_can
      spam_can.validates_presence_of :spam_can
    end
  def on_or_past_step
   :
   :
  end
end

Dies ist ein work in progress, aber ich fühle mich wie ich auf dem richtigen Weg bin. Ich verwende AASM Staaten zu bestimmen, welche zu laufen Validierungen. Ich habe noch nicht ausgearbeitet, wie die Routen funktionieren sollen, wie das Modell in Frage, in meinem Fall eine Ressource ist. sollte beispielsweise die Gruppe von Feldern Aktion bearbeiten sein?

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