Ruby如何获取子类分配的键值



我有两个类。基类和实例类。继承自实例类的基类。我无法获取实例对象键值。

class Base
  def save
    self.attributes
  end
end
class Instance < Base
  attr_accessor :name, :age
  def initialize(attributes={})
    attributes.keys.each do |attribute_name|
      send("#{attribute_name}=".to_sym, attributes[attribute_name])
    end
  end
end
p instance = Instance.new({:name => "local", :age => "25"})
p instance.save
p "Expected output"
# {:name => "test1", :age => "25"}
I want the above result from parent class only. I am getting following error message. 
**"NoMethodError: undefined method `attributes' for Instance:Class"**

因为attributes是rails方法,所以你不能直接使用它,但是你可以用不同的方式制作它。我重写了save方法。

  def save
    instance_variables.inject({}) { |sum, e| sum[e] = instance_variable_get(e);sum }
  end

最新更新