编写Rails应用程序。我想在我的模型中提供一些更常用的验证。我了解如何进行内置验证,以及如何编写自己的自定义方法。但是,我发现我在一些地方使用相同的验证,并且在不同的类上使用mixins感觉很尴尬。
这是一个例子:我有一个prop1和prop2的对象。两者都有效,但设置两者都无效。 现在,我有类似
的内容class MyClass < ActiveRecord::Base
attr_accessor :prop1, :prop2
validate :prop1_prop2_mutex
def prop1_prop2_mutex
errors.add(:base, "Can not set prop1 and prop2") if prop1 && prop2
end
end
我真正喜欢的是
class MyClass < ActiveRecord::Base
attr_accessor :prop1, :prop2
validate_mutex :prop1, :prop2
end
然后在其他地方我猜我需要像
这样的东西 def validate_mutex(property1, property2)
rrors.add(:base, "Can not set prop1 and prop2") if self.send(property1) && self.send(property2)
end
那可能不是那么接近。
那么,我如何构建一种新的可重用验证方法呢? 或者有更好的方法来解决这个问题吗?
请一般。我有几个不同形式的问题。虽然我很欣赏这个例子的一个超级简单的内置解决方案,但我有更复杂的验证,我想将解决方案应用到。