adding attributes to a Ruby object dynamically

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

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)