5 Stimmen

Best Practices für mehrere Modelle in Rails von - verschachtelt / nicht verschachtelt, und Validierungen

Anmerkung: Ich stelle diese Frage als separate Frage gemäß Brians Kommentar (von wie man mehrere Modelle in einem Rails-Formular behandelt )

Ich versuche zu lernen, wie man am besten mit mehreren Modellen in einem einzigen Rails-Formular umgeht, wenn die Modelle sowohl verschachtelt als auch nicht verschachtelt sind. Für die verschachtelten, fand ich diese beiden Tutorials hilfreich sein

http://weblog.rubyonrails.org/2009/1/26/nested-model-forms http://railsforum.com/viewtopic.php?id=717

Meine Fragen sind:

  1. Wie sind im Falle eines nicht verschachtelten Modells mehrere Einträge für das zweite Modell zu behandeln? Einfach eine Schleife laufen lassen und fields_for verwenden?
  2. Wie kann in verschachtelten/nicht verschachtelten Fällen auf doppelte Werte geprüft werden, wenn es mehrere Einträge für das zweite Modell gibt? Wenn z. B. das Projekt das primäre und die Aufgabe das sekundäre (untergeordnete) Modell ist und der Benutzer mehrere Aufgaben für das Projekt hinzufügt, wie kann dann sichergestellt werden, dass keine doppelten Aufgaben für dieses bestimmte Modell hinzugefügt werden? Eine Möglichkeit wäre, eine Schleife durch die Textwerte zu ziehen und nach Duplikaten zu suchen. Gibt es eine bessere Möglichkeit, dies auf der Objektebene statt auf der Zeichenkettenebene zu tun?

2voto

Jaryl Punkte 2561

Sie sollten sich dies ansehen, um mehrere Instanzen zu behandeln:

http://railscasts.com/episodes/73-complex-forms-part-1

Ich glaube, ich habe auch Ihre zweite Frage beantwortet:

Validierung mehrerer Modelle in einem Schienenformular

1voto

Ole Spaarmann Punkte 14745

Sie sollten sich das Presenter Pattern ansehen, es hat mir sehr geholfen!

Sie können hier beginnen:

http://blog.jayfields.com/2007/03/rails-presenter-pattern.html

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X