更新时间:2022-12-27 19:52:20
无法(单行或其他方式)列出attr_accessor定义的所有方法,并且仅列出attr_accessor定义的方法而不定义自己的attr_accessor.
There is no way (one-liner or otherwise) to list all methods defined by attr_accessor and only methods defined by attr_accessor without defining your own attr_accessor.
这是一个覆盖MyBaseClass中的attr_accessor的解决方案,以记住使用attr_accessor创建了哪些方法:
Here's a solution that overrides attr_accessor in MyBaseClass to remember which methods have been created using attr_accessor:
class MyBaseClass
def self.attr_accessor(*vars)
@attributes ||= []
@attributes.concat vars
super(*vars)
end
def self.attributes
@attributes
end
def attributes
self.class.attributes
end
end
class SubClass < MyBaseClass
attr_accessor :id, :title, :body
end
SubClass.new.attributes.inspect #=> [:id, :title, :body]