Ruby on Rails Dojo

15.06.2007

3rd step: le prime modifiche

Filed under: semilla — carlos @ 10:53

Anzitutto vorrei che la pagina di default sia quella di signup, con eventuali link a qualcosa del tipo “already registered” per andare alla pagina di login e/o logout.
Quindi modifico il file config/routes.rb che è dove l’applicazione viene configurata relativamente al formato delle URL che deve accettare. In pratica aggiungo (in testa al file!!!):

map.connect '', :controller => 'account', :action => 'index'

Ho messo l’action “index” perché andando a guardare nel codice del controller accoun_controller.rb appare quella più “sensata”: se l’utente è già loggato mostra la view “index.rb” altrimenti lo redirige alla pagina (action) di signup.
Per far sì che la precedente modifica abbia effetto devo eliminare il file public/index.html.

Bene, funziona.

Il form è un po’ povero, vorrei chiedere altri dati all’utente durante la registrazione (nome e cognome per esempio).

Vediamo… il paradigma di RoR è il “classico” MVC, quindi dovrò modificare separatemante il model, la/le view e il controller opportuni.
Dal momento che devo modificare il modello (e quindi la base di dati) mi occorre una migration:


$ ruby script/generate migration AddUserInfo

che genera il file db/migrate/002_add_user_info.rb che riempio opportunamente:


class AddUserInfo < ActiveRecord::Migration
def self.up
add_column :users, :first_name, :string
add_column :users: :last_name, :string
end

def self.down
remove_column :users, :first_name
remove_column :users, :last_name
end
end

e lancio la migration:


$ rake db:migrate

Adesso passo alla view aggiungendo i due campi nel form views/account/signup.rhtml:


<p><label for="first_name">First name</label><br/>
<%= f.text_field :first_name %></p>

<p><label for="last_name">Last name</label><br/>
<%= f.text_field :last_name %></p>

Infine aggiungo i dovuti check nel controller controllers/account_controller.rb:


validates_presence_of :first_name
validates_length_of :first_name, :within => 3..40
validates_presence_of :last_name
validates_length_of :last_name, :within => 3..40

Vediamo il risultato e proviamo ad iscriverci:
il form iniziale modificato

Sembrerebbe che io abbia finito :)... e invece no!!!!

Ho introdotto nuove funzionalità, ma non ho scritto dei test che possano verificare - in modo formale e ripetibile - che il codice introdotto sia corretto e non produca errori di sorta.
Quindi il prossimo passo è aggiungere dei test per "coprire" le nuove funzionalità introdotte.

Annunci

Lascia un commento »

Non c'è ancora nessun commento.

RSS feed for comments on this post. TrackBack URI

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Crea un sito o un blog gratuitamente presso WordPress.com.