3

嗨,我要做的就是创建一个“软”验证,换句话说,不是我没有通过验证而不是将数据保存到数据库中,而是希望验证向用户发出警告并允许用户如果他们愿意,请保存错误的数据。但是验证者之前会给他们一个警告。

我想做如下的事情:

class MyModel < ActiveRecord::Base
  warnings do
    validate :warnings_validation
  end

  def warnings_validation
    warnings.add(:name_of_element, "warning message") unless x == x
  end
end

我的模型使用了很多继承,所以像validations_scope这样的宝石没有任何想法我可以做什么/使用什么?

4

2 回答 2

1

我相信您可以从 ActiveModel::Error示例中启发自己来实现警告功能。

说明

如果您查看如何在 Active Record 中验证数据,只需查看valid?方法:

  def valid?(context = nil)
    context ||= default_validation_context
    output = super(context)
    errors.empty? && output
  end

上下文和输出并不重要,重要的是该valid?方法检查errors实例变量是否为空。

换句话说,在我给你的上一个链接中,只需将errors实例变量重命名为warnings就可以了。您必须使用内置的 rails 创建一个自定义验证器,然后warnings.add(:name, "error")在需要时简单地调用。它应该在填充warnings变量时保存记录。

于 2019-07-01T08:03:45.297 回答
-1

看到这个 -自定义验证

尝试这个

  validate :warnings_validation
  def warnings_validation
    self.name_of_element.blank?
      errors.add(:name_of_element, "warning message") unless x == x
    end
  end
于 2012-10-23T12:35:41.203 回答