Domanda

Ho una domanda, costruito con MVC, che produce una visione che fornisce informazioni di riepilogo su di un numero di modelli.Inoltre, alcuni calcoli vengono eseguiti nei diversi insiemi di dati.

Non c'è nessun chiaro modello unico (che associa a un tavolo almeno) che sembra avere senso come il punto di partenza per questo, in modo che i vari riepiloghi sono tirati dal contribuente modelli di controller, passò in vista e i calcoli vengono eseguiti lì.

Ma che sembra, bene, sporco.Ma i regolatori sono supposti per essere leggero, non è vero?E la logica di business non dovrebbe essere in vista, per come l'ho presente.

Modo in cui queste informazioni dovrebbero essere assemblati?Un nuovo modello, che non ha la mappa di una tabella?Una funzione di libreria/modulo?O qualcos'altro?

(Anche se io vedo questo come per la maggior parte dell'architettura/modello di domanda, sto lavorando in Rails, FWIW.)

Modifica:Buone risposte a tutto tondo, e un sacco di consenso, che è rassicurante.Ho "accettato" la risposta che ho fatto per mantenere il legame con Railscasts in alto.Io sto dietro a mio Railscast la visualizzazione di qualcosa che si deve fare strenui tentativi di rettificare!

È stato utile?

Soluzione

Come Brian ha detto, è possibile creare un altro modello che esegue il marshalling di un lavoro che deve fare.C'è un grande Railscast su come fare questo tipo di cosa.

HTH

Altri suggerimenti

I controller non devono mappa per specifici modelli o viste.Il tuo modello non dispone di una mappa di one-to-one a una tabella di database.È un po ' l'idea del quadro.La separazione delle preoccupazioni che possono essere testati in isolamento.

Perché non creare un modello che non eredita ActiveRecord::Base ed eseguire la logica (si pensi alla classe Cart Agile...Con Rails).

I controller non devono essere che leggero.

Tuttavia, se si dispone di alcuni calcoli che si basano solo sul modello/s, allora probabilmente hai solo bisogno di una sorta di modello di wrapper per i modelli per effettuare il calcolo.Si può, quindi, posto che l'API per la vista in modo che la visualizzazione ottiene il risultato finale.

Tu non vuoi la logica per essere in vista.Comunque sei libero di creare un database di vista.Ad eccezione, piuttosto che creare il database di lato, creare un nuovo modello.Questo vi permetterà di eseguire i calcoli e la propria logica, in un unico luogo.Il dolore cercando di mantenere il vostro punto di vista in sync vsl'unico momento di "dolore" di creazione di un nuovo modello di...Io voto per un nuovo modello.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top