【发布时间】:2016-12-07 17:17:40
【问题描述】:
我有 2 个表格。
Form 1 我有 10 个要验证的字段。
Form 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?"
编辑
更新了我的问题。
【问题讨论】:
标签: ruby-on-rails ruby validation ruby-on-rails-4