3
編寫Rails應用程序。我想在我的模型中提供一些更常用的驗證。我瞭解如何執行內置的驗證,以及如何編寫我自己的自定義方法。但是,我發現我在一些地方使用了相同的驗證,並且在不同的類上使用mixin會感到尷尬。Rails自定義驗證(可重複使用的宏樣式)
下面是一個例子:我有一個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
這可能不是那麼接近。
那麼,我該如何構建新的可重用驗證方法呢?
或者有沒有更好的方法來解決這個問題?
請一般。我有幾個不同形式的問題。雖然我會感謝一個超級簡單的內置解決方案的示例,但我有更復雜的驗證,希望將該解決方案應用於此解決方案。