Nomi di metodo dinamici, come fare?


#1

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.


#2

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.


#3

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 ?