Set Attribute Dynamically of Ruby Object

neebz picture neebz · Oct 21, 2011 · Viewed 35.3k times · Source

How can I set an object attribute dynamically in Ruby e.g.

def set_property(obj, prop_name, prop_value)
    #need to do something like > obj.prop_name = prop_value 

    #we can use eval but I'll prefer a faster/cleaner alternative:
    eval "obj.#{prop_name} = #{prop_value}"
end

Answer

lucapette picture lucapette · Oct 21, 2011

Use send:

def set_property(obj, prop_name, prop_value)
    obj.send("#{prop_name}=",prop_value)
end