Rails Best Practices 4: Scrivere i metodi nel model corretto

Nel post di oggi voglio mostrare alcune ottimizzazioni che si possono fare per i model. In particolare la definizione dei metodi nel model corretto e l’uso del costrutto delegate per ottenere un codice più pulito.1. Definire i metodi nel model corretto Nel nostro esempio supponiamo di voler rappresentare il mondo animale defin...

Leggi tutto

Design Patterns in Ruby: Chain of Responsibility

Il post di oggi tratta il primo dei pattern comportamentali mostrati dai GoF, la catena delle responsabilità. Questo pattern prevede una serie di comandi da eseguire ed una serie di oggetti adibiti alla loro applicazione. Ognuno di questi oggetti "handler" è in grado di inoltrare il comando ad un successivo handler della ca...

Leggi tutto

Design Patterns in Ruby: Adapter

Questo secondo post della serie abbandona momentaneamente i creational patterns e tratta uno degli structural pattern più importanti: l'Adapter. Lo scopo di un adapter è quello di convertire l'interfaccia di una classe in una richiesta dall'oggetto client. Grazie ad un adapter è quindi possibile far ...

Leggi tutto

Rails Best Practices 2: Spostare la logica nel model

Continuiamo la nostra analisi delle Rails Best Practices. Nel post precedente abbiamo visto Named Scope, Model Association e Scope Access come metodi per spostare la logica dell’applicazione dai controller ai model. Proseguendo nella stessa direzione oggi prendiamo in esame l’utilizzo di Model Callback e di Virtua...

Leggi tutto

Design Patterns in Ruby: Abstract Factory

Una Factory astratta fornisce un'interfaccia comune per creare famiglie di oggetti tra loro relazionate. L'oggetto client non si preoccuperà di costruire direttamente gli oggetti di cui avrà bisogno, ma chiamerà i metodi forniti da questa interfaccia comune. Vediam...

Leggi tutto

Rails Best Practices 1: Fat Model – Skinny Controller

Mantenere un controller scarno (skinny) è una delle cose più importanti per aumentare la leggibilità e la testabilità del codice. Vediamo dunque alcune pratiche per spostare la logica dal controller al model.1. Named ScopeIn questo primo esempio vediamo come utilizzare le named_scope per definire i metodi di ricerca nel model, semplificando il controller.Supponiamo di avere un controller dove nel metodo index vogliamo estrarre l’elenco delle auto berline e quello delle station wagon. ...

Leggi tutto