Set Attribute Dynamically of Ruby Object

后端 未结 4 841
一向
一向 2020-12-05 12:49

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 =          


        
4条回答
  •  时光取名叫无心
    2020-12-05 13:25

    If circumstances allow for an instance method, the following is not overly offensive:

    class P00t
      attr_reader :w00t
    
      def set_property(name, value)
        prop_name = "@#{name}".to_sym # you need the property name, prefixed with a '@', as a symbol
        self.instance_variable_set(prop_name, value)
      end
    end
    

    Usage:

    p = P00t.new
    p.set_property('w00t', 'jeremy')
    

提交回复
热议问题