Usar el valor de una variable como otro nombre de variable en Ruby

Estoy empezando a aprender Ruby y he escrito un programa que genera algunos números y los asigna a las variables @one, @two, @three, etc. El usuario puede especificar una variable para cambiar ingresando su nombre (p. Ej. uno). Entonces necesito hacer algo como '@ [valueofinout] = asd'. ¿Cómo haría esto, y hay una mejor manera ya que la forma en que estoy pensando parece desanimarse? He encontrado

x = "myvar"
myvar = "hi"
eval(x) -> "hi"

pero no entiendo completamente por qué se necesita la segunda línea. En mi caso, ¿usaría algo como

@one = "21"
input = "one"
input = "@" + input
changeto = "22"
eval(input) -> changeto

Respuestas a la pregunta(2)

Su respuesta a la pregunta