验证 1 个模型的单独表单的参数



我对模型有问题。我有一个通过 2 个表单更新的模型(因为 2 个人需要输入单独的数据)。表格 1 包含所需数据的前半部分,因此只需要在那里验证该数据。

我找不到一种方法来仅验证在表格 1 中输入的数据。下面你会发现我的 subscription.rb 模型文件。

class Subscription < ActiveRecord::Base
  # werkgever form
  if form_id == 'form1'
    validates :email, presence: true
  end
  # werknemer form
  if form_id == 'form2'
    validates :name, presence: true
    validates :city presence: true
  end
end

我需要 if 语句包含一些内容,以便仅验证记录到该表单的值,以便在更新时不会在 form2 上出现错误,反之亦然。

我希望这已经足够清楚了。任何帮助,不胜感激。谢谢。

您可以使用条件设置验证:

attr_accessor :form_type    
validates :email, presence: true, :if => :werkgever_form?
def werkgever_form?
  form_type == 'werkgever'
end

:form_type 是一个虚拟属性,它不保存在数据库中,仅用于验证。您可以在每个表单中将此属性设置为隐藏字段:

<%= form.hidden_field :form_type, 'werkgever' %>
attr_accessor :form_type
validates :email, presence: true, if: :check_if_form_one
validates :name, presence: true, unless: :check_if_form_one
validates :city presence: true, unless: :check_if_form_one
def check_if_form_one
  /* Add your condition here
    example: form_type == 'form1' */
end

您可以从控制器方法或视图页面设置form_type。

最新更新