如何编写依赖于类的多个属性的Ruby on Rails验证



假设我有一个具有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

在我看来,在模型中自定义验证将是最干净的方式:

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
参考:创建自定义验证方法

相关内容

  • 没有找到相关文章

最新更新