# Nomi di metodo dinamici, come fare?

**URL:** <https://www.ruby-forum.com/t/nomi-di-metodo-dinamici-come-fare/152003>\
**Category:** IT\
**Created:** [October 28, 2008, 9:54pm UTC](https://www.ruby-forum.com/t/nomi-di-metodo-dinamici-come-fare/152003 "2008-10-28T21:54:41Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![kerouak](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/6de8d8/32.png) [@kerouak](https://www.ruby-forum.com/u/kerouak)\
**Post date:** [October 28, 2008, 9:54pm UTC](https://www.ruby-forum.com/t/nomi-di-metodo-dinamici-come-fare/152003/1 "2008-10-28T21:54:41Z")

</div>

Salve a tutti, sono nuovo del forum e principiante di Rails.

Vorrei sapere se esiste un modo per immettere codice ruby “a piÃ¹ alto  
livello” dentro a quello in esecuzione.

Non sapendo bene come meglio formulare la domanda, passo al mio esempio  
concreto: avrei bisogno di creare un ciclo che ad ogni istanza faccia  
riferimento a un diverso attributo di una classe Question:

question.attributoN

dove N varia a seconda del numero di istanza del ciclo.

In altre parole, questo ciclo deve:

- la prima volta, riferirsi a question.attributo1
- la seconda volta, a question.attributo2
- poi question.attributo3
- ecc…

Qualcuno sa dirmi come implementare questo meccanismo ??  
Grazie per l’attenzione.

---

<div class="post-metadata">

**Author:** ![kerouak](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/6de8d8/32.png) [@kerouak](https://www.ruby-forum.com/u/kerouak)\
**Post date:** [October 28, 2008, 10:37pm UTC](https://www.ruby-forum.com/t/nomi-di-metodo-dinamici-come-fare/152003/2 "2008-10-28T22:37:49Z")

</div>

Se hai diversi oggetti Question in una collection, su cui chiamare i  
metodi (es. sulla prima question invocare attributo1, sulla seconda  
attributo2):

collection.each\_with\_index do |question,i|  
question.send “attributo#{i}”  
end

altrimenti:

0.upto(10) { |i| question.send “attributo#{i}” }

Se question è un ActiveRecord, valuta l’opzione di utilizzare il metodo  
read\_attribute, anziché send. Questo per ragioni di sicurezza.

---

<div class="post-metadata">

**Author:** ![kerouak](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/6de8d8/32.png) [@kerouak](https://www.ruby-forum.com/u/kerouak)\
**Post date:** [October 28, 2008, 10:55pm UTC](https://www.ruby-forum.com/t/nomi-di-metodo-dinamici-come-fare/152003/3 "2008-10-28T22:55:24Z")

</div>

No, in realtÃ Ã¨ uno stesso oggetto Question che ha attributo1,  
attributo2, ecc.

A ogni istanza viene chiamato un attributo diverso del medesimo  
oggetto…

In questo caso come posso fare ?
