Rails è costruito attorno al pattern MVC. Tre responsabilità separate, ognuna con un compito solo.

  • Model: parla col database e contiene le regole di business (app/models).
  • View: mostra i dati all'utente (app/views).
  • Controller: riceve la richiesta, chiede i dati al Model e sceglie la View (app/controllers).
class LaunchesController < ApplicationController
  def index
    @launches = Launch.upcoming.limit(10)  # Model
  end                                      # la view mostra @launches
end

La regola d'oro: fat model, skinny controller. La logica vive nel Model, il Controller coordina soltanto. Se un controller inizia a gonfiarsi di if, è il segnale che quella logica deve traslocare altrove.