Forum: Italian Ruby user group Nomi di metodo dinamici, come fare ?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Davide S. (Guest)
on 2008-10-28 22:54
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.
Luca G. (Guest)
on 2008-10-28 23:37
(Received via mailing list)
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.
Davide S. (Guest)
on 2008-10-28 23:55
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 ?
This topic is locked and can not be replied to.