假设我有一个包含3个属性的模型类。我想确保三者中至少有一人在场。
我是否必须为此编写自定义验证?或者有一种方法可以使用现有的验证助手吗?
答案 0 :(得分:3)
您需要为此编写自定义验证程序。您需要做的只是子类ActiveModel::Validator
并实现一个validate(record)
方法,如果发生错误,该方法会添加到记录的errors
哈希:
class YourValidator < ActiveModel::Validator
def validate(record)
if (your_failure_condition_here)
record.errors[:base] << "Your error message"
end
end
end
然后在模型中使用验证器(假设您已正确加载验证器类):
class YourModel
validates_with YourValidator
end
答案 1 :(得分:2)
在我看来,模型中的自定义验证将是最干净的方式:
class Model
validate :at_least_one_present
def at_least_one_present
if(they_dont_exist)
errors.add("need at least one of these fields")
end
end
end