Редактировать:
Вы не хотели бы просто создать метод в классе, который сделает это за вас?
def as_string(sym)
"value of #{sym.to_s}: #{send(sym)}"
end
Тогда вы могли бы использовать a.as_string(:attributename)
получить желаемый результат?В противном случае вы ищете атрибут, который будет действовать как объект, и выполнение attr_accessors
на самом деле не лучший путь.
Старый ответ:
Вам необходимо переопределить метод to_s
в определении класса.Обратите внимание, что это неявно вызывается puts
- когда метод ожидает строку, он автоматически пытается to_s
, поэтому вам не нужно.