0

我有以下内容:

class Foo

  def bar
    "foobar"
  end

  def baz
    "foobaz"
  end

  def qux(arg)
    ...
  end

end

如何覆盖as_json,以便它包含方法的键和值barbaz而不是qux,而不明确指定它们?

4

1 回答 1

2

你可以这样做:

def get_public_methods
   array = self.public_methods(false).delete_if {|meth| Foo.instance_method(meth).arity > 0}.map{|meth| [meth, self.send(meth)]}

   Hash[*array.flatten]
end

这将返回{:bar=>"foobar", :baz=>"foobaz"}

然后,调用get_public_methods你的as_json超载。

于 2013-04-14T16:27:04.090 回答