# \[rails\] validates\_presence\_of funzia ma senza errori

**URL:** <https://www.ruby-forum.com/t/rails-validates-presence-of-funzia-ma-senza-errori/112459>\
**Category:** IT\
**Created:** [August 19, 2007, 12:51pm UTC](https://www.ruby-forum.com/t/rails-validates-presence-of-funzia-ma-senza-errori/112459 "2007-08-19T12:51:06Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![stratboy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/838e76/32.png) [@stratboy](https://www.ruby-forum.com/u/stratboy)\
**Post date:** [August 19, 2007, 12:51pm UTC](https://www.ruby-forum.com/t/rails-validates-presence-of-funzia-ma-senza-errori/112459/1 "2007-08-19T12:51:06Z")

</div>

Salve! Sto costruendo la mia prima applicazione (di test) in Rails. Ho  
una tabella (in sqlite3) con 2 colonne: name e description. Ho un form  
([http://localhost:3000/formtest/admin](http://localhost:3000/formtest/admin)) che richiama un’azione ‘addEntry’  
([http://localhost:3000/formtest/addEntry](http://localhost:3000/formtest/addEntry)), in un controller denominato  
‘formtest’.

addEntry riceve i dati dal form e li salva, dopodichÃ© esegue un redirect  
ad una pagina che mostra tutte le righe (che ho chiamato entries) della  
tabella ([http://localhost:3000/test\_db1/showAll](http://localhost:3000/test_db1/showAll)).

Ora, tutto funziona correttamente. PerÃ² nel model (entry.rb) ho aggiunto  
per prova un semplice validates\_presence\_of :name. Funziona, nel senso  
che se io inserisco solo la description non salva nulla. Il problema Ã¨  
che non mi genera alcun errore. CioÃ©, io mi aspetterei che invece di  
fare il redirect, rimanesse in admin e mi segnasse il campo errato.

Qual’Ã¨ la/le stupidaggine/i che sto commettendo? 🙂 Se avete 1 minuto vi  
ringrazio.

---

<div class="post-metadata">

**Author:** ![stratboy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/838e76/32.png) [@stratboy](https://www.ruby-forum.com/u/stratboy)\
**Post date:** [August 19, 2007, 3:21pm UTC](https://www.ruby-forum.com/t/rails-validates-presence-of-funzia-ma-senza-errori/112459/2 "2007-08-19T15:21:43Z")

</div>

Mi sono risposto da solo:

il form in admin ([http://localhost:4000/formtest/admin](http://localhost:4000/formtest/admin)) chiamava  
l’azione addEntry ([http://localhost:4000/formtest/addEntry](http://localhost:4000/formtest/addEntry)):

* * *

def addEntry  
@entry = Entry.new(params[:entry])  
@entry.save  
redirect\_to(“/test\_db1/showAll”)  
end

* * *

validates\_presence\_of :name effettivamente bloccava la scrittura nel db,  
ma non poteva certo bloccare il redirect a /test\_db1/showAll. Dunque ho  
riscritto la funzione cosÃ¬:

* * *

def addEntry  
@entry = Entry.new(params[:entry])  
if @entry.save then redirect\_to(“/test\_db1/showAll”) end  
end

* * *

A questo punto perÃ² in caso di errore il controller cercava la pagina  
addEntry.rhtml, che non esiste, e comunque non Ã¨ ciÃ² che mi serve. In  
effetti devo forzare il rendering della pagina che voglio  
effettivamente:

* * *

def addEntry  
@entry = Entry.new(params[:entry])  
if @entry.save  
redirect\_to(“/test\_db1/showAll”)  
else  
render :action =\> ‘admin’  
end  
end

* * *

Ed ecco che tutto funzia a dovere.

Diciamo comunque che ho fatto un bel devasto: se tenevo admin, addEntry  
e  
showAll sotto un unico controller mi rendevo la vita molto piÃ¹ facile.  
Sbagliando s’impara!!!

---

<div class="post-metadata">

**Author:** ![stratboy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/838e76/32.png) [@stratboy](https://www.ruby-forum.com/u/stratboy)\
**Post date:** [September 5, 2007, 4:31pm UTC](https://www.ruby-forum.com/t/rails-validates-presence-of-funzia-ma-senza-errori/112459/3 "2007-09-05T16:31:40Z")

</div>

Luca R. wrote:

> Mi sono risposto da solo:  
> [spiegazione]

Innanzitutto, grazie mille per aver descritto tutto quello che ti Ã¨  
capitato e hai fatto, stavo proprio cercando di capire come gestire dei  
campi obbligatori ed ero in alto mare 🙂

Visto che ci sono, scrivo che stavo facendo, magari si puÃ² anche aprire  
un dibattito 🙂

Ho fatto una piccola applicazione in rails (ma va?), usando lo  
scaffolding da controller (su cosa\_controller.rb c’Ã¨ il simpatico  
comando: scaffold :dati ).  
Praticamente funzionava mezzo fatto a mano e mezzo in maniera  
automatica, cioÃ¨ ho creato delle views per gestire cosa devono vedere,  
fare, ecc. gli utenti, perÃ² la gestione dell’inserimento dei dati ed  
altre cose se la gestiva rails via scaffold.  
E’ andato tutto bene fino ad ora, che mi hanno chiesto di rendere  
obbligatorio l’inserimento di alcuni dati. Naturalmente con un sistema  
del genere aggiungendo al model opportuno il comando  
“validates\_presence\_of” Ã¨ saltato tutto.  
Cercando in giro e nei manuali che ho, ho notato che tutti gli esempi  
per creare la struttura di un’applicazione usavano lo scaffolding col  
comando: “script/generate scaffold Cosa”, che crea tutta la struttura  
col codice giÃ scritto, tranne il programma passato da un conoscente che  
si Ã¨ fatto TUTTO a mano.  
In preda alla disperazione (o quasi) ho provato a rifare l’applicativo  
in questa maniera e a modificare quello che mi serviva e devo dire che  
nonostante tutto sembrerebbe funzionare, ma non mi pare sia il  
massimo…

Tirando le somme, sÃ¬, lo scaffold effettivamente Ã¨ carino, ma alle volte  
ti mette dei bei paletti; dall’altra parte, scriversi tutto Ã¨ un bel  
lavoraccio e se uno Ã¨ come me che non sa l’html (ho visto che un po’ di  
basi comunque servono) e non ha mai programmato, alle volte si trova  
disorientato, specialmente perchÃ© rischia di trovarsi esempi in cui so  
dice “Usa lo scaffold che si arrangia”… sÃ¬, vabbÃ¨, ma se io non  
posso/voglio? Cosa combino?  
Tanto per fare un esempio, la pagina di inserimento dati Ã¨  
“nuovo.rhtml”; per inserire i dati li passa a “create” (gestito in  
automatico via scaffold), ma naturalmente mettendoci l’obbligatorietÃ  
dei campi, va tutto a farsi benedire perchÃ© come dicevo Ã¨ una cosa  
mista; usando lo saffold con codice esplicitato, invece, funziona tutto,  
ma devo cambiare un bel po’ di cose e sperare di non fare boiate.

Non c’Ã¨ mica da nessuna parte un bel manualozzo che spiega bene come  
usare ROR anche senza lo scaffolding?

Scusate la logorrea, la prossima volta cercherÃ² di essere piÃ¹ stringato  
'🙂

Daneel O.

---

<div class="post-metadata">

**Author:** ![stratboy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/838e76/32.png) [@stratboy](https://www.ruby-forum.com/u/stratboy)\
**Post date:** [September 7, 2007, 3:59pm UTC](https://www.ruby-forum.com/t/rails-validates-presence-of-funzia-ma-senza-errori/112459/4 "2007-09-07T15:59:16Z")

</div>

premetto che non sono esperto.  
Inserendo delle regole a livello di dati (model) lo scaffold le segue!  
Se ad esempio imposti un campo come obbligatorio e nel form non lo  
inserici, il record non viene generato e ti viene mostrato il messggio  
di errore (tramite l’helper flash)
