I have an object created, and I want, based on some conditional check, to add some attributes to this object. How can I do this? To explain what I want:
A=Object.new if(something happens) {   #make A have another attibute say age   #& store something in A.age  } 
                First of all the thing about ruby is that it allows a different syntax which is used widely by ruby coders. Capitalized identifiers are Classes or Constants (thanks to sepp2k for his comment), but you try to make it an object. And almost nobody uses {} to mark a multiline block.
a = Object.new if (something happens)   # do something end   I'm not sure what your question is, but I have an idea, and this would be the solution:
If you know what attributes that class can have, and it's limited you should use
class YourClass   attr_accessor :age end   attr_accessor :age is short for:
def age   @age end def age=(new_age)   @age = new_age end   Now you can do something like this:
a = YourClass.new if (some condition)   a.age = new_value end   If you want to do it completely dynamically you can do something like this:
a = Object.new if (some condition)   a.class.module_eval { attr_accessor :age}   a.age = new_age_value end 
                        You could use an OpenStruct:
a = OpenStruct.new if condition     a.age = 4 end   Or just use a plain old hash.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With