I have an instance of a class with data and would like to extend it with some instance variables. Here is what I know:
class A
attr_accessor :id
attr_accessor :description
def initialize(id, description = nil)
@id = id
@description = description
end
def methode1
puts "Method 1"
end
end
a = A.new(1, 'This is a descriptipn')
I got the instances a
from another code, so that i don’t have access to the initialization. I can only continue from here:
a.instance_variable_set(:@my_var_1, '')
a.instance_variable_set(:@my_var_2, [])
This works fine. But if I want to get the value , i have to use the following code:
puts a.instance_variable_get(:@my_var_1)
Unfortunately, the following code does not work.
puts a.my_var_1
This makes me wonder why I can’t access the instance variable in this way, since it is now part of my instance.
Another question: How can I add an element to @my_var_2
?
a.my_var_2 << 'a'
# => undefined method `my_var_2' for #<A:0x000001a2ad128b48 @id=1, @description="This is a descriptipn", @my_var_1="Text", @my_var_2=[]>Text
(NoMethodError)