我想要一个调用另外两个宏调用的宏。例如,在一个示例中,
之前:
class Apple < ValidatedObject::Base
attr_accessor :diameter
validates :diameter, type: Float
end
之后:
class Apple < ValidatedObject::Base
validates_attr :diameter, type: Float
end
我的问题实际上是,如何实现#validates_attr
,它除了进行两个单独的宏调用之外没有其他工作。
我一直在阅读宏,看到define_method
等。但是,如果我只是委托给另外两个现有的宏,我真的需要为此编写一个新的宏吗?我尝试过写一个类方法,但没有让它工作。
2条答案
按热度按时间5tmbdcev1#
您可以在
ValidatedObject::Base
类中定义一个方法,如下所示:然后像这样从
Apple
子类调用该方法:mw3dktmi2#
创建一个类方法,从这个方法中调用你需要的任何方法。举例来说: