我有2种形式。如何在轨道上跳过多个验证红宝石
表单1我有10个字段,我正在验证。
表格2但它只包含2个字段。
模型是一样的。
我需要做的是:
时,他们是由表单提交的验证领域。如果我没有发布任何字段,它不应该在模型中验证。如果我发布5个字段,它应该验证5个字段。如果我发布2个字段,它应该只验证2个不是全部。
所以表格1所有10个需要验证,形成2只2应该验证不休息8
这里是我的代码:
validates :teacher_number, :title, :name, :gender, :location, :dob,
:contact_mobile, :contact_home, :street, :city, :state, :zip_code, :country,
presence: true
validates :teacher_number, uniqueness: {scope: :school_id}
validate :teacher_number_existance, :on => :create
validate :school_existance, :on => :create
下面是我的尝试,成功地工作正常,但其大量的代码,这是一种不好的做法。
validates :teacher_number, presence: true, if: "teacher_number && teacher_number.blank?"
validates :title, presence: true, if: "title && title.blank?"
validates :name, presence: true, if: "name && name.blank?"
validates :gender, presence: true, if: "gender && gender.blank?"
validates :location, presence: true, if: "location && location.blank?"
validates :dob, presence: true, if: "dob && dob.blank?"
validates :contact_mobile, presence: true, if: "contact_mobile && contact_mobile.blank?"
validates :contact_home, presence: true, if: "contact_home && contact_home.blank?"
validates :street, presence: true, if: "street && street.blank?"
validates :city, presence: true, if: "city && city.blank?"
validates :state, presence: true, if: "state && state.blank?"
validates :zip_code, presence: true, if: "zip_code && zip_code.blank?"
validates :country, presence: true, if: "country && country.blank?"
validates :teacher_number, uniqueness: {scope: :school_id}, if: "teacher_number && teacher_number.blank?"
validate :teacher_number_existance, :on => :create, if: "self.teacher_number && self.teacher_number.blank?"
validate :school_existance, :on => :create, if: "self.teacher_number && self.teacher_number.blank?"
编辑
更新了我的问题。
谢谢你的回答,但这不是我的情况。在我的关键字,'老师'或'personal_teacher'的情况下,存在隐藏的参数 – LearningROR