【发布时间】:2013-09-18 12:26:18
【问题描述】:
我有一个简单的验证类:
class MappingValidator
def validate(mapping)
end
protected
def validate_presence_of_title(mapping)
...
end
def validate_presence_of_key(mapping)
...
end
def validates_class_exists(mapping)
...
end
end
在validate 方法中,我想调用任何以validate_ 开头的方法,并将mapping 作为参数传递。这也需要对MappingValidator 的子类起作用,因此如果子类声明了一个以validate_ 开头的方法,那么在子类实例上调用 validate 时也会调用它。调用顺序无关紧要。
【问题讨论】:
-
不包含
ActiveModel::Validations的任何理由 -
@firien 我没有使用 Rails,这是一个非常具体的用例。
-
你不需要rails,只需要
active_modelgem,虽然我认为这取决于active_support(这可能是一个矫枉过正)
标签: ruby dynamic methods metaprogramming