Frage

Ich habe eine Anwendung, erstellt unter Verwendung von MVC ist, dass erzeugt eine Ansicht liefert zusammenfassende Informationen über eine Reihe von Modellen.Zusätzlich zu, dass, einige Berechnungen durchgeführt werden, die in den verschiedenen Sätzen von Daten.

Es gibt keine klare einzigen Modells (die Karten, um eine Tabelle mindestens), scheint Sinn zu machen, als Ausgangspunkt für diese, so die verschiedene Zusammenfassungen sind gezogen aus dem Beitrag-Modelle in den controller, übergeben, in den Blick und die Berechnungen werden dort durchgeführt.

Aber das scheint, nun, dirty.Aber Controller sind angenommen zu werden, leicht, nicht wahr?Und Geschäftslogik sollte nicht in Aussicht, da ich es als Geschenk.

Also, wo sollten diese Informationen zusammengestellt werden?Ein neues Modell, das nicht anzeigen einer Tabelle?Eine library-Funktion/Modul?Oder etwas anderes?

(Obwohl ich finde, dass dies meistens zu einem architektonischen/Muster Frage, ich arbeite in Rails, FWIW.)

Bearbeiten:Gute Antworten, die alle Runde, und eine Menge von Konsens, das ist beruhigend.Ich "akzeptiert" die Antwort, die ich Tat, um zu halten die Verbindung zu Railscasts an der Spitze.Ich bin hinter meiner Railscast betrachten - etwas, das ich machen werde anstrengend zu korrigieren versucht!

War es hilfreich?

Lösung

Wie Brian sagte, können Sie erstellen ein anderes Modell, die Marschälle, die die arbeiten, die getan werden muss.Es ist eine große Railscast wie zu tun diese Art der Sache.

HTH

Andere Tipps

Controller nicht haben, um anzeigen auf bestimmten Modellen oder-Ansichten.Ihr Modell nicht auf map eins-zu-eins eine Datenbank-Tabelle.Das ist sozusagen die Idee des Frameworks.Die Trennung von Bedenken, dass können alle werden isoliert getestet.

Warum nicht ein Modell erstellen, dass Erben nicht ActiveRecord::Base und führen Sie die Logik (denken Sie an die Cart-Klasse in Agilen...Mit Schienen).

Controller müssen nicht sein dass leicht.

Allerdings, wenn Sie haben einige Berechnungen, die nur verlassen sich auf den model/s, dann werden Sie wahrscheinlich brauchen nur eine Art Modell-wrapper für die Modelle für die Berechnung ein.Sie können dann in der API für die Ansicht, sodass der Blick wird auf das Endergebnis.

Sie wollen nicht die Logik in der Ansicht.Allerdings sind Sie frei, erstellen Sie einen Datenbank-view.Außer, anstatt es anlegen auf der Datenbank Seite, erstellen Sie es als ein neues Modell.Dies ermöglicht es Ihnen, führen Sie Ihre Berechnungen und Ihre Logik dort, an einem Ort.Der Schmerz, der versucht zu halten, Ihre Ansichten in sync vs.das eine mal "Schmerz" erstellen Sie das neue Modell...Ich Stimme für ein neues Modell.

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