# Each campi record

**URL:** <https://www.ruby-forum.com/t/each-campi-record/68543>\
**Category:** IT\
**Created:** [September 13, 2006, 2:45pm UTC](https://www.ruby-forum.com/t/each-campi-record/68543 "2006-09-13T14:45:59Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Biagio\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/77aa72/32.png) [@Biagio\_M](https://www.ruby-forum.com/u/Biagio_M)\
**Post date:** [September 13, 2006, 2:45pm UTC](https://www.ruby-forum.com/t/each-campi-record/68543/1 "2006-09-13T14:45:59Z")

</div>

Ho questo:

def crea  
@patient = Patient.new(params[:patient])

```
@patient.cognome = @patient.cognome.upcase ****
@patient.nome = @patient.nome.upcase ****
@patient.codice_fiscale = @patient.codice_fiscale.upcase ***....
if @patient.save
  flash[:notice] = 'Paziente creato.'
  redirect_to :action => 'list'
else
  render :action => 'new'
end

```

end

Invece di usare le poco efficienti ed eleganti linee \*\*\*  
posso usare un, per esempio, each per ciclare tutti i campi e renderli  
maiuscoli?

Grazie

---

<div class="post-metadata">

**Author:** ![Biagio\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/77aa72/32.png) [@Biagio\_M](https://www.ruby-forum.com/u/Biagio_M)\
**Post date:** [September 13, 2006, 4:29pm UTC](https://www.ruby-forum.com/t/each-campi-record/68543/2 "2006-09-13T16:29:32Z")

</div>

On Sep 13, 2006, at 2:45 PM, Biagio M. wrote:

> ```
> flash[:notice] = 'Paziente creato.'
> redirect_to :action => 'list'
> else
> render :action => 'new'
> end
> 
> ```
> 
> end
> 
> Invece di usare le poco efficienti ed eleganti linee \*\*\*  
> posso usare un, per esempio, each per ciclare tutti i campi e renderli  
> maiuscoli?

class Patient \< ActiveRecord::Base  
def before\_save  
@cognome.upcase!  
@nome.upcase!  
@codice\_fiscale.upcase!  
end  
end

anche se il motivo per cui vuoi girare tutto in maiuscolo _nel db_ mi  
sfugge totalmente 🙂

---

<div class="post-metadata">

**Author:** ![Biagio\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/77aa72/32.png) [@Biagio\_M](https://www.ruby-forum.com/u/Biagio_M)\
**Post date:** [September 13, 2006, 4:38pm UTC](https://www.ruby-forum.com/t/each-campi-record/68543/3 "2006-09-13T16:38:37Z")

</div>

Stefano C. wrote:

> > 
> 
> class Patient \< ActiveRecord::Base  
> def before\_save  
> @cognome.upcase!  
> @nome.upcase!  
> @codice\_fiscale.upcase!  
> end  
> end  
> Il problema Ã¨ evitare le ripetizioni di linee  
> @cognome.upcase!  
> @nome.upcase!  
> @codice\_fiscale.upcase!

ed usare un ciclo.

> anche se il motivo per cui vuoi girare tutto in maiuscolo _nel db_ mi  
> sfugge totalmente 🙂

l’upcase Ã¨ un esempio. Potrebbe essere qualsiasi metodo. L’importante Ã¨  
non ripeterlo per ogni campo su varie linee di codice

Grazie per la risposta

---

<div class="post-metadata">

**Author:** ![Biagio\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/77aa72/32.png) [@Biagio\_M](https://www.ruby-forum.com/u/Biagio_M)\
**Post date:** [September 13, 2006, 4:58pm UTC](https://www.ruby-forum.com/t/each-campi-record/68543/4 "2006-09-13T16:58:25Z")

</div>

Chiaro Scuro wrote:

> una cosa del genere intendi?
> 
> [cognome, nome, codice\_fiscale].each { |field| field.upcase! }
> 
> nel caso di pochi elementi trovo piï¿½ elengante scriverlo in forma estesa  
> perï¿½.

E allora lasciamo da parte l’eleganza e riformuliamo il problema:

Come faccio a evitare le ripetizioni ?  
Si tratta di capire, almeno per me che non ho esperienza con questo  
linguaggio,

come lavorare con questa cosa qui sotto:

@patient = Patient.new(params[:patient])

tipo @params[“patient”].each {… .upcase}

Ripeto, non bisogna guardare al semplice esempio che ho fatto.  
Ciao

---

<div class="post-metadata">

**Author:** ![Biagio\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/77aa72/32.png) [@Biagio\_M](https://www.ruby-forum.com/u/Biagio_M)\
**Post date:** [September 13, 2006, 4:43pm UTC](https://www.ruby-forum.com/t/each-campi-record/68543/5 "2006-09-13T16:43:34Z")

</div>

una cosa del genere intendi?

[cognome, nome, codice\_fiscale].each { |field| field.upcase! }

nel caso di pochi elementi trovo più elengante scriverlo in forma estesa  
però.  
On 9/13/06, Biagio M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > Il problema è evitare le ripetizioni di linee

## – Chiaroscuro

Liquid Development: [http://liquiddevelopment.blogspot.com/](http://liquiddevelopment.blogspot.com/)

---

<div class="post-metadata">

**Author:** ![Biagio\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/77aa72/32.png) [@Biagio\_M](https://www.ruby-forum.com/u/Biagio_M)\
**Post date:** [September 13, 2006, 5:51pm UTC](https://www.ruby-forum.com/t/each-campi-record/68543/6 "2006-09-13T17:51:45Z")

</div>

On Sep 13, 2006, at 4:58 PM, Biagio M. wrote:

> E allora lasciamo da parte l’eleganza e riformuliamo il problema:

Una soluzione non elegante NON e’ una soluzione 🙂

> Ripeto, non bisogna guardare al semplice esempio che ho fatto.  
> Ciao

E allora fai un esempio non semplice 🙂

Cmq ActiveRecord#attributes ritorna una hash con tutti gli attributi  
e i loro valori (clonati).  
Nel tuo caso:

x.attributes.each do |attr\_name, attr\_value| x.send("#{ attr\_name }  
=", attr\_value.upcase) end

Ovviamente i casi in cui puoi fare la stessa operazione  
indifferentemente su tutti i campi  
sono piuttosto rari…

---

<div class="post-metadata">

**Author:** ![Biagio\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/77aa72/32.png) [@Biagio\_M](https://www.ruby-forum.com/u/Biagio_M)\
**Post date:** [September 13, 2006, 6:22pm UTC](https://www.ruby-forum.com/t/each-campi-record/68543/7 "2006-09-13T18:22:54Z")

</div>

Stefano C. wrote:

> > Una soluzione non elegante NON e’ una soluzione 🙂  
> > Elegante qui sta per sintetica.

> x.attributes.each do |attr\_name, attr\_value| x.send("#{ attr\_name }  
> =", attr\_value.upcase) end

Questo Ã¨ quello che cercavo.  
Ho provato con  
@params[“patient”].each ecc…  
@patient.attributes.each ecc…  
ma mi serviva questo attr\_value.

Dove trovo la documentazione della tua linea di codice? (per attributes)  
non sono stato c…apace di trovare quello che mi serviva.

Comunque grazie mille  
Ciao

---

<div class="post-metadata">

**Author:** ![Biagio\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/77aa72/32.png) [@Biagio\_M](https://www.ruby-forum.com/u/Biagio_M)\
**Post date:** [September 13, 2006, 7:39pm UTC](https://www.ruby-forum.com/t/each-campi-record/68543/8 "2006-09-13T19:39:59Z")

</div>

On 9/13/06, Biagio M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Dove trovo la documentazione della tua linea di codice? (per attributes)  
> non sono stato c…apace di trovare quello che mi serviva.

Ciao Biagio,  
[http://api.rubyonrails.org/](http://api.rubyonrails.org/) ti indica che il metodo ritorna un Hash.

‘ri Hash#each’ ti spiega come usare il metodo each.

ciao,  
Antonio
