# Gestione di oggetti nulli

**URL:** <https://www.ruby-forum.com/t/gestione-di-oggetti-nulli/67853>\
**Category:** IT\
**Created:** [September 7, 2006, 11:21am UTC](https://www.ruby-forum.com/t/gestione-di-oggetti-nulli/67853 "2006-09-07T11:21:21Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![robyonrails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/b5ac83/32.png) [@robyonrails](https://www.ruby-forum.com/u/robyonrails)\
**Post date:** [September 7, 2006, 11:21am UTC](https://www.ruby-forum.com/t/gestione-di-oggetti-nulli/67853/1 "2006-09-07T11:21:21Z")

</div>

PuÃ² capitare che l’utente non compili un campo del form, e se io vi  
accedo con

params[:table][:field] (e simili)

mi ritorna il dannato errore:

“You have a nil object when you didn’t expect it!  
You might have expected an instance of Array.  
The error occured while evaluating nil.[]”

Solo che trovo inconcepibile che se io faccio qualcosa tipo

if myobject.nil?

mi ritorni quell’errore se l’oggetto Ã¨ nullo! A cosa serve la  
condizione?

Mi sono spiegato?

---

<div class="post-metadata">

**Author:** ![robyonrails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/b5ac83/32.png) [@robyonrails](https://www.ruby-forum.com/u/robyonrails)\
**Post date:** [September 7, 2006, 11:56am UTC](https://www.ruby-forum.com/t/gestione-di-oggetti-nulli/67853/2 "2006-09-07T11:56:24Z")

</div>

On Sep 7, 2006, at 11:21 AM, Roberto C. wrote:

> Solo che trovo inconcepibile che se io faccio qualcosa tipo
> 
> if myobject.nil?
> 
> mi ritorni quell’errore se l’oggetto è nullo! A cosa serve la  
> condizione?
> 
> Mi sono spiegato?

Meglio se copincolli il pezzo di codice incriminato…

–  
Stefano C.  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![robyonrails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/b5ac83/32.png) [@robyonrails](https://www.ruby-forum.com/u/robyonrails)\
**Post date:** [September 7, 2006, 11:56am UTC](https://www.ruby-forum.com/t/gestione-di-oggetti-nulli/67853/3 "2006-09-07T11:56:23Z")

</div>

Non è proprio così… nel senso che stai interrogando una Hash di Hash…

params[:table][:field] è uguale a params.fetch(:table).fetch(:field)

che tu vuoi controllare a runtime con .nil? quindi:

if params.fetch(:table).fetch(:field).nil?

Probabilmente a te diventa nil il fetch(:table) quindi è plausibile che ti  
dia l’errore. Per risolvere dovresti fare qualcosa tipo:

if params[:table]  
… params[:table][:field]  
end

che però inizia a essere stilisticamente bruttino. Di solito in rails si  
passano i parametri al costruttore dell’activerecord e si gestiscono i  
nil  
con i validators…

t = Table.new(params[:table])  
if t.valid? … etc etc

Spero di essere stato spiegato… 🙂  
Paolo

On 9/7/06, Roberto C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> ## The error occured while evaluating nil.[]"
> 
> Posted via [http://www.ruby-forum.com/](http://www.ruby-forum.com/).
> 
> * * *
> 
> Ml mailing list  
> removed\_email\_address@domain.invalid  
> [http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)

–  
Paolo D.’  
SeeSaw | Another point of view

> **[A Padova il buon software chi lo fa?](https://seesaw.it/)**
>
> A creare software sono tantissimi, a farlo molto bene c’è una certa schiera di sviluppatori, ma a costruirlo un pezzo alla volta insieme al cliente, plasmarlo sulle sue esigenze e renderlo parte di un nuovo approccio al mondo del lavoro sono davvero...

removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![robyonrails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/b5ac83/32.png) [@robyonrails](https://www.ruby-forum.com/u/robyonrails)\
**Post date:** [September 7, 2006, 4:37pm UTC](https://www.ruby-forum.com/t/gestione-di-oggetti-nulli/67853/4 "2006-09-07T16:37:15Z")

</div>

On 9/7/06, Roberto C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Può capitare che l’utente non compili un campo del form

Se non è un campo obbligatorio. Altrimenti puoi usare le validations (ad  
esempio validates\_presence\_of)

, e se io vi

> accedo con
> 
> params[:table][:field] (e simili)
> 
> mi ritorna il dannato errore:

Come ti hanno già suggerito, esistono metodi migliori per gestire la cosa,  
ma se ti interessa solo evitare l’errore, puoi usare un semplice ‘rescue  
nil’ o un ‘unless params[:table].nil?’.

Solo che trovo inconcepibile che se io faccio qualcosa tipo

> if myobject.nil?
> 
> mi ritorni quell’errore se l’oggetto è nullo! A cosa serve la  
> condizione?

Se hai params[:a][:b], devi controllare che params[:a] non restituisca  
nil.

Ciao,  
Antonio
