繁体   English   中英

自定义表单验证导轨

[英]Custom form Validation Rails

我想知道我是否正确设置了我的方法,因为我的验证尝试在该方法的一半被忽略了。 (我提供了一个基本示例,我想在添加更多内容之前使其正常工作)

我有两种形式的所有形式都属于同一个对象。 如我的方法所示,表格的形式是由animal_type列区分的

 class Animal < ActiveRecord::Base
   before_save :animal_form_validation


  private
  def animal_form_validation
    if self.animal_type == 'Dog'
      ap('Im validating the dog Form')
        if self.name.length <= 0
          errors.add(:name, "Name cannot be blank")
        end
    elsif self.animal_type == 'Cat'
      ap('Im validating the cat form')
        if self.name.length <= 0
          errors.add(:name, "Name cannot be blank")
        end
    end
  end
end

无论我要提交的是猫还是狗,我都会在控制台中得到正确的消息(使用真棒打印),因此该方法正在运行,并且知道我正在提交哪种表格,但是对于下一个if语句,它将被忽略。

所以我的语法有错误吗? 还是我在名称字段上调用了错误的验证检查?

谢谢

使用验证而不是before_save回调:

validate :animal_form_validation

另外,如果在验证之前检查相同条件,则可以添加条件验证。 示例: validate :animal_form_validation, if: name.blank?

您正在before_save中调用这些验证,此验证是在记录经过验证并假定为有效之后。 您需要运行它作为验证:

validate :animal_form_validation

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM